Skip to content

Commit 803031a

Browse files
committed
Merge tag 'v6.6.114' into 6.6-main
This is the 6.6.114 stable release # -----BEGIN PGP SIGNATURE----- # # iQIzBAABCgAdFiEEZH8oZUiU471FcZm+ONu9yGCSaT4FAmj6OTIACgkQONu9yGCS # aT4Snw/9F7xnRFwsCcNhe9iNLhwam6xvovxWlkTxsBV2CeseoDyzjPaUA59qf3GC # a51UW1hj8CDjmckmgpmhMuRarfhKxopJuJkeTl9QeriJYQwJQZ0VAjQCMVe4pIfL # Yiz1sd/2XydSz7K9zYnadQDNPRE0Oe8cAz3gZgB2bg6egeOHnPinn3b7E+yWLJg8 # ln8ZZ92Tm5ZP9awFXBGMf0iBZKy40IVsMl6LkECaY4M0BkGNmMJAhJxarA2i/I5C # /TIUEXaPkLtvpIA+ayQbReL7hAomSZfZYOEUX58joowlnTLCJxW7AxBBVmA/hxx0 # FjG/RLpsB9TAEKFlTcBdbTBivMJPDnVGmIoHOGecxTwe5xkQZo7yuDpg/cS1OVvD # 7tCy5fCvOWqRpzVFQ9beQ6QpMkwwgLms8o3xoqbPKOYT1feDLenftc0uXJya0trM # UdOHpwM1wo7rM17fJAdOBNVWLNz/H9AEGBCXRp3v69D1QCMh7j++RNc9gOuDr2C8 # v41vhPs6Iz5+fDOmPuq8C5K71khS2/FhrQZngvpWa8IMQ+qq37gkxSPoK7AP/y+n # 0Xq6RZkKyZ8i8qdcbu15/z6TlnlFZsaiP0HtsNxq4MBG7quWzNFlx7bGR7RiX1fW # +CWW+KaA0962xe5oBbuJgkZBqNkPshrHcbycx/xChjhSfv+QQrg= # =G6o2 # -----END PGP SIGNATURE----- # gpg: Signature made Thu Oct 23 16:18:26 2025 CEST # gpg: using RSA key 647F28654894E3BD457199BE38DBBDC86092693E # gpg: Can't check signature: No public key
2 parents dbf9455 + 4a24311 commit 803031a

127 files changed

Lines changed: 1542 additions & 923 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Documentation/arch/arm64/silicon-errata.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,8 @@ stable kernels.
187187
+----------------+-----------------+-----------------+-----------------------------+
188188
| ARM | Neoverse-V3 | #3312417 | ARM64_ERRATUM_3194386 |
189189
+----------------+-----------------+-----------------+-----------------------------+
190+
| ARM | Neoverse-V3AE | #3312417 | ARM64_ERRATUM_3194386 |
191+
+----------------+-----------------+-----------------+-----------------------------+
190192
| ARM | MMU-500 | #841119,826419 | N/A |
191193
+----------------+-----------------+-----------------+-----------------------------+
192194
| ARM | MMU-600 | #1076982,1209401| N/A |

Documentation/networking/seg6-sysctl.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ seg6_require_hmac - INTEGER
2525

2626
Default is 0.
2727

28+
/proc/sys/net/ipv6/seg6_* variables:
29+
====================================
30+
2831
seg6_flowlabel - INTEGER
2932
Controls the behaviour of computing the flowlabel of outer
3033
IPv6 header in case of SR T.encaps

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# SPDX-License-Identifier: GPL-2.0
22
VERSION = 6
33
PATCHLEVEL = 6
4-
SUBLEVEL = 113
4+
SUBLEVEL = 114
55
EXTRAVERSION =
66
NAME = Pinguïn Aangedreven
77

arch/arm64/Kconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1094,6 +1094,7 @@ config ARM64_ERRATUM_3194386
10941094
* ARM Neoverse-V1 erratum 3324341
10951095
* ARM Neoverse V2 erratum 3324336
10961096
* ARM Neoverse-V3 erratum 3312417
1097+
* ARM Neoverse-V3AE erratum 3312417
10971098

10981099
On affected cores "MSR SSBS, #0" instructions may not affect
10991100
subsequent speculative instructions, which may permit unexepected

arch/arm64/include/asm/cputype.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@
9393
#define ARM_CPU_PART_NEOVERSE_V2 0xD4F
9494
#define ARM_CPU_PART_CORTEX_A720 0xD81
9595
#define ARM_CPU_PART_CORTEX_X4 0xD82
96+
#define ARM_CPU_PART_NEOVERSE_V3AE 0xD83
9697
#define ARM_CPU_PART_NEOVERSE_V3 0xD84
9798
#define ARM_CPU_PART_CORTEX_X925 0xD85
9899
#define ARM_CPU_PART_CORTEX_A725 0xD87
@@ -180,6 +181,7 @@
180181
#define MIDR_NEOVERSE_V2 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_NEOVERSE_V2)
181182
#define MIDR_CORTEX_A720 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A720)
182183
#define MIDR_CORTEX_X4 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_X4)
184+
#define MIDR_NEOVERSE_V3AE MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_NEOVERSE_V3AE)
183185
#define MIDR_NEOVERSE_V3 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_NEOVERSE_V3)
184186
#define MIDR_CORTEX_X925 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_X925)
185187
#define MIDR_CORTEX_A725 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A725)

arch/arm64/kernel/cpu_errata.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -471,6 +471,7 @@ static const struct midr_range erratum_spec_ssbs_list[] = {
471471
MIDR_ALL_VERSIONS(MIDR_NEOVERSE_V1),
472472
MIDR_ALL_VERSIONS(MIDR_NEOVERSE_V2),
473473
MIDR_ALL_VERSIONS(MIDR_NEOVERSE_V3),
474+
MIDR_ALL_VERSIONS(MIDR_NEOVERSE_V3AE),
474475
{}
475476
};
476477
#endif

arch/riscv/kernel/probes/kprobes.c

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,15 @@ static void __kprobes arch_simulate_insn(struct kprobe *p, struct pt_regs *regs)
4848
post_kprobe_handler(p, kcb, regs);
4949
}
5050

51-
static bool __kprobes arch_check_kprobe(struct kprobe *p)
51+
static bool __kprobes arch_check_kprobe(unsigned long addr)
5252
{
53-
unsigned long tmp = (unsigned long)p->addr - p->offset;
54-
unsigned long addr = (unsigned long)p->addr;
53+
unsigned long tmp, offset;
54+
55+
/* start iterating at the closest preceding symbol */
56+
if (!kallsyms_lookup_size_offset(addr, NULL, &offset))
57+
return false;
58+
59+
tmp = addr - offset;
5560

5661
while (tmp <= addr) {
5762
if (tmp == addr)
@@ -70,7 +75,7 @@ int __kprobes arch_prepare_kprobe(struct kprobe *p)
7075
if ((unsigned long)insn & 0x1)
7176
return -EILSEQ;
7277

73-
if (!arch_check_kprobe(p))
78+
if (!arch_check_kprobe((unsigned long)p->addr))
7479
return -EILSEQ;
7580

7681
/* copy instruction */

block/bdev.c

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,9 +147,26 @@ int set_blocksize(struct block_device *bdev, int size)
147147

148148
/* Don't change the size if it is same as current */
149149
if (bdev->bd_inode->i_blkbits != blksize_bits(size)) {
150+
/*
151+
* Flush and truncate the pagecache before we reconfigure the
152+
* mapping geometry because folio sizes are variable now. If a
153+
* reader has already allocated a folio whose size is smaller
154+
* than the new min_order but invokes readahead after the new
155+
* min_order becomes visible, readahead will think there are
156+
* "zero" blocks per folio and crash. Take the inode and
157+
* invalidation locks to avoid racing with
158+
* read/write/fallocate.
159+
*/
160+
inode_lock(bdev->bd_inode);
161+
filemap_invalidate_lock(bdev->bd_inode->i_mapping);
162+
150163
sync_blockdev(bdev);
164+
kill_bdev(bdev);
165+
151166
bdev->bd_inode->i_blkbits = blksize_bits(size);
152167
kill_bdev(bdev);
168+
filemap_invalidate_unlock(bdev->bd_inode->i_mapping);
169+
inode_unlock(bdev->bd_inode);
153170
}
154171
return 0;
155172
}

block/blk-zoned.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -401,6 +401,7 @@ int blkdev_zone_mgmt_ioctl(struct block_device *bdev, blk_mode_t mode,
401401
op = REQ_OP_ZONE_RESET;
402402

403403
/* Invalidate the page cache, including dirty pages. */
404+
inode_lock(bdev->bd_inode);
404405
filemap_invalidate_lock(bdev->bd_inode->i_mapping);
405406
ret = blkdev_truncate_zone_range(bdev, mode, &zrange);
406407
if (ret)
@@ -423,8 +424,10 @@ int blkdev_zone_mgmt_ioctl(struct block_device *bdev, blk_mode_t mode,
423424
GFP_KERNEL);
424425

425426
fail:
426-
if (cmd == BLKRESETZONE)
427+
if (cmd == BLKRESETZONE) {
427428
filemap_invalidate_unlock(bdev->bd_inode->i_mapping);
429+
inode_unlock(bdev->bd_inode);
430+
}
428431

429432
return ret;
430433
}

block/fops.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -681,7 +681,14 @@ static ssize_t blkdev_write_iter(struct kiocb *iocb, struct iov_iter *from)
681681
ret = direct_write_fallback(iocb, from, ret,
682682
blkdev_buffered_write(iocb, from));
683683
} else {
684+
/*
685+
* Take i_rwsem and invalidate_lock to avoid racing with
686+
* set_blocksize changing i_blkbits/folio order and punching
687+
* out the pagecache.
688+
*/
689+
inode_lock_shared(bd_inode);
684690
ret = blkdev_buffered_write(iocb, from);
691+
inode_unlock_shared(bd_inode);
685692
}
686693

687694
if (ret > 0)
@@ -693,6 +700,7 @@ static ssize_t blkdev_write_iter(struct kiocb *iocb, struct iov_iter *from)
693700
static ssize_t blkdev_read_iter(struct kiocb *iocb, struct iov_iter *to)
694701
{
695702
struct block_device *bdev = I_BDEV(iocb->ki_filp->f_mapping->host);
703+
struct inode *bd_inode = bdev->bd_inode;
696704
loff_t size = bdev_nr_bytes(bdev);
697705
loff_t pos = iocb->ki_pos;
698706
size_t shorted = 0;
@@ -728,7 +736,13 @@ static ssize_t blkdev_read_iter(struct kiocb *iocb, struct iov_iter *to)
728736
goto reexpand;
729737
}
730738

739+
/*
740+
* Take i_rwsem and invalidate_lock to avoid racing with set_blocksize
741+
* changing i_blkbits/folio order and punching out the pagecache.
742+
*/
743+
inode_lock_shared(bd_inode);
731744
ret = filemap_read(iocb, to, ret);
745+
inode_unlock_shared(bd_inode);
732746

733747
reexpand:
734748
if (unlikely(shorted))
@@ -771,6 +785,7 @@ static long blkdev_fallocate(struct file *file, int mode, loff_t start,
771785
if ((start | len) & (bdev_logical_block_size(bdev) - 1))
772786
return -EINVAL;
773787

788+
inode_lock(inode);
774789
filemap_invalidate_lock(inode->i_mapping);
775790

776791
/*
@@ -811,6 +826,7 @@ static long blkdev_fallocate(struct file *file, int mode, loff_t start,
811826

812827
fail:
813828
filemap_invalidate_unlock(inode->i_mapping);
829+
inode_unlock(inode);
814830
return error;
815831
}
816832

0 commit comments

Comments
 (0)