5.10.190-rc1 review
Subsystems (5)
Greg Kroah-Hartman
maintainerPATCH 163/201 libceph: fix potential hang in ceph_osdc_notify()
In reply to Greg Kroah-HartmanFrom: Ilya Dryomov <[email protected]>
commit e6e2843230799230fc5deb8279728a7218b0d63c upstream.
If the cluster becomes unavailable, ceph_osdc_notify() may hang even with osd_request_timeout option set because linger_notify_finish_wait() waits for MWatchNotify NOTIFY_COMPLETE message with no associated OSD request in flight -- it's completely asynchronous.
Introduce an additional timeout, derived from the specified notify timeout. While at it, switch both waits to killable which is more correct.
--- net/ceph/osd_client.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-)
net/ceph/osd_client.c +14 -6
@@ -3330,17 +3330,24 @@ static int linger_reg_commit_wait(structint ret;dout ("%s lreq %p linger_id %llu\n" , __func__, lreq, lreq->linger_id); - ret =wait_for_completion_interruptible (&lreq->reg_commit_wait); + ret =wait_for_completion_killable (&lreq->reg_commit_wait);return ret ?: lreq->reg_commit_error; } -static int linger_notify_finish_wait (struct ceph_osd_linger_request *lreq) +static int linger_notify_finish_wait (struct ceph_osd_linger_request *lreq, +unsigned long timeout) { -int ret; +long left;dout ("%s lreq %p linger_id %llu\n" , __func__, lreq, lreq->linger_id); - ret =wait_for_completion_interruptible (&lreq->notify_finish_wait); -return ret ?: lreq->notify_finish_error; + left =wait_for_completion_killable_timeout (&lreq->notify_finish_wait, +ceph_timeout_jiffies (timeout)); +if (left <=0 ) + left = left ?: -ETIMEDOUT ; +else + left = lreq->notify_finish_error;/* completed */ + +return left; }/*
@@ -4888,7 +4895,8 @@ int ceph_osdc_notify(struct ceph_osd_clilinger_submit (lreq); ret =linger_reg_commit_wait (lreq);if (!ret) - ret =linger_notify_finish_wait (lreq); + ret =linger_notify_finish_wait (lreq, +msecs_to_jiffies (2 * timeout *MSEC_PER_SEC ));else dout ("lreq %p failed to initiate notify %d\n" , lreq, ret);
Greg Kroah-Hartman
maintainerPATCH 164/201 USB: zaurus: Add ID for A-300/B-500/C-700
In reply to Greg Kroah-HartmanFrom: Ross Maynard <[email protected]>
commit b99225b4fe297d07400f9e2332ecd7347b224f8d upstream.
The SL-A300, B500/5600, and C700 devices no longer auto-load because of "usbnet: Remove over-broad module alias from zaurus."
This patch adds IDs for those 3 devices.
--- drivers/net/usb/cdc_ether.c | 21 +++++++++++++++++++++ drivers/net/usb/zaurus.c | 21 +++++++++++++++++++++ 2 files changed, 42 insertions(+)
drivers/net/usb/cdc_ether.c +21 -0
@@ -604,6 +604,13 @@ static const struct usb_device_id produc .match_flags = USB_DEVICE_ID_MATCH_INT_INFO | USB_DEVICE_ID_MATCH_DEVICE, .idVendor = 0x04DD, + .idProduct =0x8005 ,/* A-300 */ +ZAURUS_FAKE_INTERFACE , + .driver_info = 0, +}, { + .match_flags =USB_DEVICE_ID_MATCH_INT_INFO + |USB_DEVICE_ID_MATCH_DEVICE , + .idVendor = 0x04DD, .idProduct = 0x8006, /* B-500/SL-5600 */ZAURUS_MASTER_INTERFACE , .driver_info = 0,
@@ -611,11 +618,25 @@ static const struct usb_device_id produc .match_flags = USB_DEVICE_ID_MATCH_INT_INFO | USB_DEVICE_ID_MATCH_DEVICE, .idVendor = 0x04DD, + .idProduct =0x8006 ,/* B-500/SL-5600 */ +ZAURUS_FAKE_INTERFACE , + .driver_info = 0, +}, { + .match_flags =USB_DEVICE_ID_MATCH_INT_INFO + |USB_DEVICE_ID_MATCH_DEVICE , + .idVendor = 0x04DD, .idProduct = 0x8007, /* C-700 */ZAURUS_MASTER_INTERFACE , .driver_info = 0, }, { .match_flags =USB_DEVICE_ID_MATCH_INT_INFO + |USB_DEVICE_ID_MATCH_DEVICE , + .idVendor = 0x04DD, + .idProduct = 0x8007, /* C-700 */ +ZAURUS_FAKE_INTERFACE , + .driver_info = 0, +}, { + .match_flags =USB_DEVICE_ID_MATCH_INT_INFO |USB_DEVICE_ID_MATCH_DEVICE , .idVendor = 0x04DD, .idProduct = 0x9031, /* C-750 C-760 */
drivers/net/usb/zaurus.c +21 -0
@@ -289,11 +289,25 @@ static const struct usb_device_id produc .match_flags = USB_DEVICE_ID_MATCH_INT_INFO | USB_DEVICE_ID_MATCH_DEVICE, .idVendor = 0x04DD, + .idProduct =0x8005 ,/* A-300 */ +ZAURUS_FAKE_INTERFACE , + .driver_info = (unsigned long)&bogus_mdlm_info, +}, { + .match_flags =USB_DEVICE_ID_MATCH_INT_INFO + |USB_DEVICE_ID_MATCH_DEVICE , + .idVendor = 0x04DD, .idProduct = 0x8006, /* B-500/SL-5600 */ZAURUS_MASTER_INTERFACE , .driver_info = ZAURUS_PXA_INFO, }, { .match_flags =USB_DEVICE_ID_MATCH_INT_INFO + |USB_DEVICE_ID_MATCH_DEVICE , + .idVendor = 0x04DD, + .idProduct = 0x8006, /* B-500/SL-5600 */ +ZAURUS_FAKE_INTERFACE , + .driver_info = (unsigned long)&bogus_mdlm_info, +}, { + .match_flags =USB_DEVICE_ID_MATCH_INT_INFO |USB_DEVICE_ID_MATCH_DEVICE , .idVendor = 0x04DD, .idProduct = 0x8007, /* C-700 */
@@ -301,6 +315,13 @@ static const struct usb_device_id produc .driver_info = ZAURUS_PXA_INFO, }, { .match_flags = USB_DEVICE_ID_MATCH_INT_INFO + | USB_DEVICE_ID_MATCH_DEVICE, + .idVendor = 0x04DD, + .idProduct =0x8007 ,/* C-700 */ +ZAURUS_FAKE_INTERFACE , + .driver_info = (unsigned long)&bogus_mdlm_info, +}, { + .match_flags =USB_DEVICE_ID_MATCH_INT_INFO |USB_DEVICE_ID_MATCH_DEVICE , .idVendor = 0x04DD, .idProduct = 0x9031, /* C-750 C-760 */
Greg Kroah-Hartman
maintainerPATCH 165/201 ceph: defer stopping mdsc delayed_work
In reply to Greg Kroah-HartmanFrom: Xiubo Li <[email protected]>
commit e7e607bd00481745550389a29ecabe33e13d67cf upstream.
Flushing the dirty buffer may take a long time if the cluster is overloaded or if there is network issue. So we should ping the MDSs periodically to keep alive, else the MDS will blocklist the kclient.
--- fs/ceph/mds_client.c | 4 ++-- fs/ceph/mds_client.h | 5 +++++ fs/ceph/super.c | 10 ++++++++++ 3 files changed, 17 insertions(+), 2 deletions(-)
fs/ceph/mds_client.c +2 -2
@@ -4511,7 +4511,7 @@ static void delayed_work(struct work_strdout ("mdsc delayed_work\n" ); -if (mdsc->stopping) +if (mdsc->stopping >=CEPH_MDSC_STOPPING_FLUSHED )return ;mutex_lock (&mdsc->mutex);
@@ -4701,7 +4701,7 @@ void send_flush_mdlog(struct ceph_mds_sevoid ceph_mdsc_pre_umount (struct ceph_mds_client *mdsc) {dout ("pre_umount\n" ); - mdsc->stopping =1 ; + mdsc->stopping =CEPH_MDSC_STOPPING_BEGIN ;ceph_mdsc_iterate_sessions (mdsc, send_flush_mdlog, true);ceph_mdsc_iterate_sessions (mdsc, lock_unlock_session, false);
fs/ceph/mds_client.h +5 -0
@@ -372,6 +372,11 @@ struct cap_wait {int want; }; +enum { +CEPH_MDSC_STOPPING_BEGIN =1 , +CEPH_MDSC_STOPPING_FLUSHED =2 , +}; +/* * mds client state */
fs/ceph/super.c +10 -0
@@ -1222,6 +1222,16 @@ static void ceph_kill_sb(struct super_blceph_mdsc_pre_umount (fsc->mdsc);flush_fs_workqueues (fsc); +/* +* Though the kill_anon_super() will finally trigger the +* sync_filesystem() anyway, we still need to do it here +* and then bump the stage of shutdown to stop the work +* queue as earlier as possible. +*/ +sync_filesystem (s); + + fsc->mdsc->stopping =CEPH_MDSC_STOPPING_FLUSHED ; +kill_anon_super (s); fsc->client->extra_mon_dispatch =NULL ;
Greg Kroah-Hartman
maintainerPATCH 166/201 exfat: use kvmalloc_array/kvfree instead of kmalloc_array/kfree
In reply to Greg Kroah-HartmanFrom: gaoming <[email protected]>
commit daf60d6cca26e50d65dac374db92e58de745ad26 upstream.
The call stack shown below is a scenario in the Linux 4.19 kernel. Allocating memory failed where exfat fs use kmalloc_array due to system memory fragmentation, while the u-disk was inserted without recognition.
Devices such as u-disk using the exfat file system are pluggable and may be insert into the system at any time.
However, long-term running systems cannot guarantee the continuity of physical memory. Therefore, it's necessary to address this issue.
Binder:2632_6: page allocation failure: order:4,
mode:0x6040c0(GFP_KERNEL|__GFP_COMP), nodemask=(null)
Call trace: [242178.097582] dump_backtrace+0x0/0x4 [242178.097589] dump_stack+0xf4/0x134 [242178.097598] warn_alloc+0xd8/0x144 [242178.097603] __alloc_pages_nodemask+0x1364/0x1384 [242178.097608] kmalloc_order+0x2c/0x510 [242178.097612] kmalloc_order_trace+0x40/0x16c [242178.097618] __kmalloc+0x360/0x408 [242178.097624] load_alloc_bitmap+0x160/0x284 [242178.097628] exfat_fill_super+0xa3c/0xe7c [242178.097635] mount_bdev+0x2e8/0x3a0 [242178.097638] exfat_fs_mount+0x40/0x50 [242178.097643] mount_fs+0x138/0x2e8 [242178.097649] vfs_kern_mount+0x90/0x270 [242178.097655] do_mount+0x798/0x173c [242178.097659] ksys_mount+0x114/0x1ac [242178.097665] __arm64_sys_mount+0x24/0x34 [242178.097671] el0_svc_common+0xb8/0x1b8 [242178.097676] el0_svc_handler+0x74/0x90 [242178.097681] el0_svc+0x8/0x340
By analyzing the exfat code,we found that continuous physical memory is not required here,so kvmalloc_array is used can solve this problem.
--- fs/exfat/balloc.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
fs/exfat/balloc.c +3 -3
@@ -69,7 +69,7 @@ static int exfat_allocate_bitmap(struct } sbi->map_sectors = ((need_map_size -1 ) >> (sb->s_blocksize_bits)) +1 ; - sbi->vol_amap =kmalloc_array (sbi->map_sectors, + sbi->vol_amap =kvmalloc_array (sbi->map_sectors,sizeof (struct buffer_head *),GFP_KERNEL );if (!sbi->vol_amap)return -ENOMEM ;
@@ -84,7 +84,7 @@ static int exfat_allocate_bitmap(structwhile (j < i)brelse (sbi->vol_amap[j++]); -kfree (sbi->vol_amap); +kvfree (sbi->vol_amap); sbi->vol_amap =NULL ;return -EIO ; }
@@ -138,7 +138,7 @@ void exfat_free_bitmap(struct exfat_sb_ifor (i =0 ; i < sbi->map_sectors; i++)__brelse (sbi->vol_amap[i]); -kfree (sbi->vol_amap); +kvfree (sbi->vol_amap); }int exfat_set_bitmap (struct inode *inode,unsigned int clu)
Greg Kroah-Hartman
maintainerPATCH 167/201 exfat: release s_lock before calling dir_emit()
In reply to Greg Kroah-HartmanFrom: Sungjong Seo <[email protected]>
commit ff84772fd45d486e4fc78c82e2f70ce5333543e6 upstream.
There is a potential deadlock reported by syzbot as below:
======================================================
WARNING: possible circular locking dependency detected
6.4.0-next-20230707-syzkaller #0 Not tainted
------------------------------------------------------
syz-executor330/5073 is trying to acquire lock:ffff8880218527a0 (&mm->mmap_lock){++++}-{3:3}, at: mmap_read_lock_killable include/linux/mmap_lock.h:151 [inline] ffff8880218527a0 (&mm->mmap_lock){++++}-{3:3}, at: get_mmap_lock_carefully mm/memory.c:5293 [inline] ffff8880218527a0 (&mm->mmap_lock){++++}-{3:3}, at: lock_mm_and_find_vma+0x369/0x510 mm/memory.c:5344 but task is already holding lock:ffff888019f760e0 (&sbi->s_lock){+.+.}-{3:3}, at: exfat_iterate+0x117/0xb50 fs/exfat/dir.c:232
which lock already depends on the new lock.
Chain exists of: &mm->mmap_lock --> mapping.invalidate_lock#3 --> &sbi->s_lock Possible unsafe locking scenario:
CPU0 CPU1
---- ----
lock(&sbi->s_lock);
lock(mapping.invalidate_lock#3);
lock(&sbi->s_lock); rlock(&mm->mmap_lock);
Let's try to avoid above potential deadlock condition by moving dir_emit*() out of sbi->s_lock coverage.
--- fs/exfat/dir.c | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-)
fs/exfat/dir.c +12 -15
@@ -210,7 +210,10 @@ static void exfat_free_namebuf(struct exexfat_init_namebuf (nb); } -/* skip iterating emit_dots when dir is empty */ +/* +* Before calling dir_emit*(), sbi->s_lock should be released +* because page fault can occur in dir_emit*(). +*/ #define ITER_POS_FILLED_DOTS (2)static int exfat_iterate (struct file *filp,struct dir_context *ctx) {
@@ -225,11 +228,10 @@ static int exfat_iterate(struct file *fiint err =0 , fake_offset =0 ;exfat_init_namebuf (nb); -mutex_lock (&EXFAT_SB (sb)->s_lock); cpos = ctx->pos;if (!dir_emit_dots (filp, ctx)) - goto unlock; + goto out;if (ctx->pos ==ITER_POS_FILLED_DOTS ) { cpos =0 ;
@@ -241,16 +243,18 @@ static int exfat_iterate(struct file *fi/* name buffer should be allocated before use */ err =exfat_alloc_namebuf (nb);if (err) - goto unlock; + goto out; get_new: +mutex_lock (&EXFAT_SB (sb)->s_lock); +if (ei->flags ==ALLOC_NO_FAT_CHAIN && cpos >=i_size_read (inode)) goto end_of_dir; err =exfat_readdir (inode, &cpos, &de);if (err) {/* -* At least we tried to read a sector. Move cpos to next sector -* position (should be aligned). +* At least we tried to read a sector. +* Move cpos to next sector position (should be aligned). */ if (err == -EIO ) { cpos +=1 << (sb->s_blocksize_bits);
@@ -273,16 +277,10 @@ get_new: inum =iunique (sb,EXFAT_ROOT_INO ); } -/* -* Before calling dir_emit(), sb_lock should be released. -* Because page fault can occur in dir_emit() when the size -* of buffer given from user is larger than one page size. -*/ mutex_unlock (&EXFAT_SB (sb)->s_lock);if (!dir_emit (ctx, nb->lfn,strlen (nb->lfn), inum, (de.attr &ATTR_SUBDIR ) ?DT_DIR :DT_REG )) - goto out_unlocked; -mutex_lock (&EXFAT_SB (sb)->s_lock); + goto out; ctx->pos = cpos; goto get_new;
@@ -290,9 +288,8 @@ end_of_dir:if (!cpos && fake_offset) cpos =ITER_POS_FILLED_DOTS ; ctx->pos = cpos; -unlock:mutex_unlock (&EXFAT_SB (sb)->s_lock); -out_unlocked: +out:/* * To improve performance, free namebuf after unlock sb_lock. * If namebuf is not allocated, this function do nothing
Greg Kroah-Hartman
maintainerPATCH 168/201 mtd: spinand: toshiba: Fix ecc_get_status
In reply to Greg Kroah-HartmanFrom: Olivier Maignial <[email protected]>
commit 8544cda94dae6be3f1359539079c68bb731428b1 upstream.
Reading ECC status is failing.
tx58cxgxsxraix_ecc_get_status() is using on-stack buffer for SPINAND_GET_FEATURE_OP() output. It is not suitable for DMA needs of spi-mem.
Fix this by using the spi-mem operations dedicated buffer spinand->scratchbuf.
Seespinand->scratchbuf:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/linux/mtd/spinand.h?h=v6.3#n418spi_mem_check_op():
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/spi/spi-mem.c?h=v6.3#n199
--- drivers/mtd/nand/spi/toshiba.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/mtd/nand/spi/toshiba.c +2 -2
@@ -73,7 +73,7 @@ static int tx58cxgxsxraix_ecc_get_status {struct nand_device *nand =spinand_to_nand (spinand);u8 mbf =0 ; -struct spi_mem_op op =SPINAND_GET_FEATURE_OP (0x30 , &mbf); +struct spi_mem_op op =SPINAND_GET_FEATURE_OP (0x30 , spinand->scratchbuf);switch (status &STATUS_ECC_MASK ) {case STATUS_ECC_NO_BITFLIPS :
@@ -92,7 +92,7 @@ static int tx58cxgxsxraix_ecc_get_statusif (spi_mem_exec_op (spinand->spimem, &op))return nanddev_get_ecc_requirements (nand)->strength; - mbf >>=4 ; + mbf = *(spinand->scratchbuf) >>4 ;if (WARN_ON (mbf >nanddev_get_ecc_requirements (nand)->strength || !mbf))return nanddev_get_ecc_requirements (nand)->strength;
Greg Kroah-Hartman
maintainerPATCH 169/201 mtd: rawnand: meson: fix OOB available bytes for ECC
In reply to Greg Kroah-HartmanFrom: Arseniy Krasnov <[email protected]>
commit 7e6b04f9238eab0f684fafd158c1f32ea65b9eaa upstream.
It is incorrect to calculate number of OOB bytes for ECC engine using some "already known" ECC step size (1024 bytes here). Number of such bytes for ECC engine must be whole OOB except 2 bytes for bad block marker, while proper ECC step size and strength will be selected by ECC logic.
--- drivers/mtd/nand/raw/meson_nand.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
drivers/mtd/nand/raw/meson_nand.c +1 -2
@@ -1180,7 +1180,6 @@ static int meson_nand_attach_chip(structstruct meson_nfc *nfc =nand_get_controller_data (nand);struct meson_nfc_nand_chip *meson_chip =to_meson_nand (nand);struct mtd_info *mtd =nand_to_mtd (nand); -int nsectors = mtd->writesize /1024 ;int ret;if (!mtd->name) {
@@ -1198,7 +1197,7 @@ static int meson_nand_attach_chip(struct nand->options |=NAND_NO_SUBPAGE_WRITE ; ret =nand_ecc_choose_conf (nand, nfc->data->ecc_caps, - mtd->oobsize -2 * nsectors); + mtd->oobsize -2 );if (ret) {dev_err (nfc->dev,"failed to ECC init\n" );return -EINVAL ;
Greg Kroah-Hartman
maintainerPATCH 170/201 arm64: dts: stratix10: fix incorrect I2C property for SCL signal
In reply to Greg Kroah-HartmanFrom: Dinh Nguyen <[email protected]>
commit db66795f61354c373ecdadbdae1ed253a96c47cb upstream.
The correct dts property for the SCL falling time is "i2c-scl-falling-time-ns".
--- arch/arm64/boot/dts/altera/socfpga_stratix10_socdk.dts | 2 +- arch/arm64/boot/dts/altera/socfpga_stratix10_socdk_nand.dts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
arch/arm64/boot/dts/altera/socfpga_stratix10_socdk.dts +1 -1
@@ -129,7 +129,7 @@ status = "okay"; clock-frequency = <100000>; i2c-sda-falling-time-ns = <890>; /* hcnt */ - i2c-sdl-falling-time-ns = <890>; /* lcnt */ + i2c-scl-falling-time-ns = <890>; /* lcnt */ adc@14 { compatible = "lltc,ltc2497";
arch/arm64/boot/dts/altera/socfpga_stratix10_socdk_nand.dts +1 -1
@@ -162,7 +162,7 @@ status = "okay"; clock-frequency = <100000>; i2c-sda-falling-time-ns = <890>; /* hcnt */ - i2c-sdl-falling-time-ns = <890>; /* lcnt */ + i2c-scl-falling-time-ns = <890>; /* lcnt */ adc@14 { compatible = "lltc,ltc2497";
Greg Kroah-Hartman
maintainerPATCH 171/201 net: tun_chr_open(): set sk_uid from current_fsuid()
In reply to Greg Kroah-HartmanFrom: Laszlo Ersek <[email protected]>
commit 9bc3047374d5bec163e83e743709e23753376f0c upstream.
Commit a096ccca6e50 initializes the "sk_uid" field in the protocol socket (struct sock) from the "/dev/net/tun" device node's owner UID. Per original commit 86741ec25462 ("net: core: Add a UID field to struct sock.", 2016-11-04), that's wrong: the idea is to cache the UID of the userspace process that creates the socket. Commit 86741ec25462 mentions socket() and accept(); with "tun", the action that creates the socket is open("/dev/net/tun").
Therefore the device node's owner UID is irrelevant. In most cases, "/dev/net/tun" will be owned by root, so in practice, commit a096ccca6e50 has no observable effect:
- before, "sk_uid" would be zero, due to undefined behavior (CVE-2023-1076),
- after, "sk_uid" would be zero, due to "/dev/net/tun" being owned by root.
What matters is the (fs)UID of the process performing the open(), so cache that in "sk_uid".
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2173435
--- drivers/net/tun.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/net/tun.c +1 -1
@@ -3457,7 +3457,7 @@ static int tun_chr_open(struct inode *in tfile->socket.file = file; tfile->socket.ops = &tun_socket_ops; -sock_init_data_uid (&tfile->socket, &tfile->sk, inode->i_uid); +sock_init_data_uid (&tfile->socket, &tfile->sk,current_fsuid ()); tfile->sk.sk_write_space = tun_sock_write_space; tfile->sk.sk_sndbuf =INT_MAX ;
Greg Kroah-Hartman
maintainerPATCH 172/201 net: tap_open(): set sk_uid from current_fsuid()
In reply to Greg Kroah-HartmanFrom: Laszlo Ersek <[email protected]>
commit 5c9241f3ceab3257abe2923a59950db0dc8bb737 upstream.
Commit 66b2c338adce initializes the "sk_uid" field in the protocol socket (struct sock) from the "/dev/tapX" device node's owner UID. Per original commit 86741ec25462 ("net: core: Add a UID field to struct sock.", 2016-11-04), that's wrong: the idea is to cache the UID of the userspace process that creates the socket. Commit 86741ec25462 mentions socket() and accept(); with "tap", the action that creates the socket is open("/dev/tapX").
Therefore the device node's owner UID is irrelevant. In most cases, "/dev/tapX" will be owned by root, so in practice, commit 66b2c338adce has no observable effect:
- before, "sk_uid" would be zero, due to undefined behavior (CVE-2023-1076),
- after, "sk_uid" would be zero, due to "/dev/tapX" being owned by root.
What matters is the (fs)UID of the process performing the open(), so cache that in "sk_uid".
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2173435
--- drivers/net/tap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/net/tap.c +1 -1
@@ -523,7 +523,7 @@ static int tap_open(struct inode *inode, q->sock.state =SS_CONNECTED ; q->sock.file = file; q->sock.ops = &tap_socket_ops; -sock_init_data_uid (&q->sock, &q->sk, inode->i_uid); +sock_init_data_uid (&q->sock, &q->sk,current_fsuid ()); q->sk.sk_write_space = tap_sock_write_space; q->sk.sk_destruct = tap_sock_destruct; q->flags =IFF_VNET_HDR |IFF_NO_PI |IFF_TAP ;
Greg Kroah-Hartman
maintainerPATCH 173/201 bpf: Disable preemption in bpf_event_output
In reply to Greg Kroah-HartmanFrom: Jiri Olsa <[email protected]>
commit d62cc390c2e99ae267ffe4b8d7e2e08b6c758c32 upstream.
We received report [1] of kernel crash, which is caused by using nesting protection without disabled preemption.
The bpf_event_output can be called by programs executed by bpf_prog_run_array_cg function that disabled migration but keeps preemption enabled.
This can cause task to be preempted by another one inside the nesting protection and lead eventually to two tasks using same perf_sample_data buffer and cause crashes like:
BUG: kernel NULL pointer dereference, address: 0000000000000001 #PF: supervisor instruction fetch in kernel mode #PF: error_code(0x0010) - not-present page ... ? perf_output_sample+0x12a/0x9a0 ? finish_task_switch.isra.0+0x81/0x280 ? perf_event_output+0x66/0xa0 ? bpf_event_output+0x13a/0x190 ? bpf_event_output_data+0x22/0x40 ? bpf_prog_dfc84bbde731b257_cil_sock4_connect+0x40a/0xacb ? xa_load+0x87/0xe0 ? __cgroup_bpf_run_filter_sock_addr+0xc1/0x1a0 ? release_sock+0x3e/0x90 ? sk_setsockopt+0x1a1/0x12f0 ? udp_pre_connect+0x36/0x50 ? inet_dgram_connect+0x93/0xa0 ? __sys_connect+0xb4/0xe0 ? udp_setsockopt+0x27/0x40 ? __pfx_udp_push_pending_frames+0x10/0x10 ? __sys_setsockopt+0xdf/0x1a0 ? __x64_sys_connect+0xf/0x20 ? do_syscall_64+0x3a/0x90 ? entry_SYSCALL_64_after_hwframe+0x72/0xdc
Fixing this by disabling preemption in bpf_event_output.
[1] https://github.com/cilium/cilium/issues/26756
--- kernel/trace/bpf_trace.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
kernel/trace/bpf_trace.c +5 -1
@@ -970,7 +970,6 @@ static DEFINE_PER_CPU(struct bpf_trace_su64 bpf_event_output (struct bpf_map *map,u64 flags,void *meta,u64 meta_size,void *ctx,u64 ctx_size,bpf_ctx_copy_t ctx_copy) { -int nest_level =this_cpu_inc_return (bpf_event_output_nest_level);struct perf_raw_frag frag = { .copy = ctx_copy, .size = ctx_size,
@@ -987,8 +986,12 @@ u64 bpf_event_output(struct bpf_map *map };struct perf_sample_data *sd;struct pt_regs *regs; +int nest_level;u64 ret; +preempt_disable (); + nest_level =this_cpu_inc_return (bpf_event_output_nest_level); +if (WARN_ON_ONCE (nest_level >ARRAY_SIZE (bpf_misc_sds.sds))) { ret = -EBUSY ; goto out;
@@ -1003,6 +1006,7 @@ u64 bpf_event_output(struct bpf_map *map ret =__bpf_perf_event_output (regs, map, flags, sd); out:this_cpu_dec (bpf_event_output_nest_level); +preempt_enable ();return ret; }
Greg Kroah-Hartman
maintainerPATCH 174/201 open: make RESOLVE_CACHED correctly test for O_TMPFILE
In reply to Greg Kroah-HartmanFrom: Aleksa Sarai <[email protected]>
commit a0fc452a5d7fed986205539259df1d60546f536c upstream.
O_TMPFILE is actually __O_TMPFILE|O_DIRECTORY. This means that the old fast-path check for RESOLVE_CACHED would reject all users passing O_DIRECTORY with -EAGAIN, when in fact the intended test was to check for __O_TMPFILE.
Message-Id: <[email protected]>
--- fs/open.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
fs/open.c +1 -1
@@ -1101,7 +1101,7 @@ inline int build_open_flags(const struct lookup_flags |=LOOKUP_IN_ROOT ;if (how->resolve &RESOLVE_CACHED ) {/* Don't bother even trying for create/truncate/tmpfile open */ -if (flags & (O_TRUNC |O_CREAT |O_TMPFILE )) +if (flags & (O_TRUNC |O_CREAT | __O_TMPFILE))return -EAGAIN ; lookup_flags |=LOOKUP_CACHED ; }
Greg Kroah-Hartman
maintainerPATCH 175/201 drm/ttm: check null pointer before accessing when swapping
In reply to Greg Kroah-HartmanFrom: Guchun Chen <[email protected]>
commit 2dedcf414bb01b8d966eb445db1d181d92304fb2 upstream.
Add a check to avoid null pointer dereference as below:
[ 90.002283] general protection fault, probably for non-canonical address 0xdffffc0000000000: 0000 [#1] PREEMPT SMP KASAN NOPTI [ 90.002292] KASAN: null-ptr-deref in range [0x0000000000000000-0x0000000000000007] [ 90.002346] ? exc_general_protection+0x159/0x240 [ 90.002352] ? asm_exc_general_protection+0x26/0x30 [ 90.002357] ? ttm_bo_evict_swapout_allowable+0x322/0x5e0 [ttm] [ 90.002365] ? ttm_bo_evict_swapout_allowable+0x42e/0x5e0 [ttm] [ 90.002373] ttm_bo_swapout+0x134/0x7f0 [ttm] [ 90.002383] ? __pfx_ttm_bo_swapout+0x10/0x10 [ttm] [ 90.002391] ? lock_acquire+0x44d/0x4f0 [ 90.002398] ? ttm_device_swapout+0xa5/0x260 [ttm] [ 90.002412] ? lock_acquired+0x355/0xa00 [ 90.002416] ? do_raw_spin_trylock+0xb6/0x190 [ 90.002421] ? __pfx_lock_acquired+0x10/0x10 [ 90.002426] ? ttm_global_swapout+0x25/0x210 [ttm] [ 90.002442] ttm_device_swapout+0x198/0x260 [ttm] [ 90.002456] ? __pfx_ttm_device_swapout+0x10/0x10 [ttm] [ 90.002472] ttm_global_swapout+0x75/0x210 [ttm] [ 90.002486] ttm_tt_populate+0x187/0x3f0 [ttm] [ 90.002501] ttm_bo_handle_move_mem+0x437/0x590 [ttm] [ 90.002517] ttm_bo_validate+0x275/0x430 [ttm] [ 90.002530] ? __pfx_ttm_bo_validate+0x10/0x10 [ttm] [ 90.002544] ? kasan_save_stack+0x33/0x60 [ 90.002550] ? kasan_set_track+0x25/0x30 [ 90.002554] ? __kasan_kmalloc+0x8f/0xa0 [ 90.002558] ? amdgpu_gtt_mgr_new+0x81/0x420 [amdgpu] [ 90.003023] ? ttm_resource_alloc+0xf6/0x220 [ttm] [ 90.003038] amdgpu_bo_pin_restricted+0x2dd/0x8b0 [amdgpu] [ 90.003210] ? __x64_sys_ioctl+0x131/0x1a0 [ 90.003210] ? do_syscall_64+0x60/0x90
--- drivers/gpu/drm/ttm/ttm_bo.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/gpu/drm/ttm/ttm_bo.c +2 -1
@@ -674,7 +674,8 @@ static bool ttm_bo_evict_swapout_allowabif (bo->pin_count) { *locked = false; - *busy = false; +if (busy) + *busy = false;return false; }
Greg Kroah-Hartman
maintainerPATCH 176/201 file: reinstate f_pos locking optimization for regular files
In reply to Greg Kroah-HartmanFrom: Linus Torvalds <[email protected]>
commit 797964253d358cf8d705614dda394dbe30120223 upstream.
In commit 20ea1e7d13c1 ("file: always lock position for FMODE_ATOMIC_POS") we ended up always taking the file pos lock, because pidfd_getfd() could get a reference to the file even when it didn't have an elevated file count due to threading of other sharing cases.
But Mateusz Guzik reports that the extra locking is actually measurable, so let's re-introduce the optimization, and only force the locking for directory traversal.
Directories need the lock for correctness reasons, while regular files only need it for "POSIX semantics". Since pidfd_getfd() is about debuggers etc special things that are _way_ outside of POSIX, we can relax the rules for that case.
--- fs/file.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-)
fs/file.c +17 -1
@@ -1007,12 +1007,28 @@ unsigned long __fdget_raw(unsigned int freturn __fget_light (fd,0 ); } +/* +* Try to avoid f_pos locking. We only need it if the +* file is marked for FMODE_ATOMIC_POS, and it can be +* accessed multiple ways. +* +* Always do it for directories, because pidfd_getfd() +* can make a file accessible even if it otherwise would +* not be, and for directories this is a correctness +* issue, not a "POSIX requirement". +*/ +static inline bool file_needs_f_pos_lock (struct file *file) +{ +return (file->f_mode &FMODE_ATOMIC_POS ) && + (file_count (file) >1 ||S_ISDIR (file_inode (file)->i_mode)); +} +unsigned long __fdget_pos (unsigned int fd) {unsigned long v =__fdget (fd);struct file *file = (struct file *)(v & ~3 ); -if (file && (file->f_mode &FMODE_ATOMIC_POS )) { +if (file &&file_needs_f_pos_lock (file)) { v |=FDPUT_POS_UNLOCK ;mutex_lock (&file->f_pos_lock); }
Greg Kroah-Hartman
maintainerPATCH 177/201 tracing: Fix sleeping while atomic in kdb ftdump
In reply to Greg Kroah-HartmanFrom: Douglas Anderson <[email protected]>
commit 495fcec8648cdfb483b5b9ab310f3839f07cb3b8 upstream.
If you drop into kdb and type "ftdump" you'll get a sleeping while atomic warning from memory allocation in trace_find_next_entry().
This appears to have been caused by commit ff895103a84a ("tracing:
Save off entry when peeking at next entry"), which added the allocation in that path. The problematic commit was already fixed by commit 8e99cf91b99b ("tracing: Do not allocate buffer in trace_find_next_entry() in atomic") but that fix missed the kdb case.
The fix here is easy: just move the assignment of the static buffer to the place where it should have been to begin with:trace_init_global_iter(). That function is called in two places, once is right before the assignment of the static buffer added by the previous fix and once is in kdb.
Note that it appears that there's a second static buffer that we need to assign that was added in commit efbbdaa22bb7 ("tracing: Show real address for trace event arguments"), so we'll move that too.
--- kernel/trace/trace.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-)
kernel/trace/trace.c +6 -5
@@ -9416,6 +9416,12 @@ void trace_init_global_iter(struct trace/* Output in nanoseconds only if we are using a clock in nanoseconds. */ if (trace_clocks[iter->tr->clock_id].in_ns) iter->iter_flags |=TRACE_FILE_TIME_IN_NS ; + +/* Can not use kmalloc for iter.temp and iter.fmt */ + iter->temp = static_temp_buf; + iter->temp_size =STATIC_TEMP_BUF_SIZE ; + iter->fmt = static_fmt_buf; + iter->fmt_size =STATIC_FMT_BUF_SIZE ; }void ftrace_dump (enum ftrace_dump_mode oops_dump_mode)
@@ -9449,11 +9455,6 @@ void ftrace_dump(enum ftrace_dump_mode o/* Simulate the iterator */ trace_init_global_iter (&iter); -/* Can not use kmalloc for iter.temp and iter.fmt */ - iter.temp = static_temp_buf; - iter.temp_size =STATIC_TEMP_BUF_SIZE ; - iter.fmt = static_fmt_buf; - iter.fmt_size =STATIC_FMT_BUF_SIZE ;for_each_tracing_cpu (cpu) {atomic_inc (&per_cpu_ptr (iter.array_buffer->data, cpu)->disabled);
Greg Kroah-Hartman
maintainerPATCH 178/201 fs/sysv: Null check to prevent null-ptr-deref bug
In reply to Greg Kroah-HartmanFrom: Prince Kumar Maurya <[email protected]>
commit ea2b62f305893992156a798f665847e0663c9f41 upstream.
sb_getblk(inode->i_sb, parent) return a null ptr and taking lock on that leads to the null-ptr-deref bug.
Message-Id: <[email protected]>
--- fs/sysv/itree.c | 4 ++++ 1 file changed, 4 insertions(+)
fs/sysv/itree.c +4 -0
@@ -145,6 +145,10 @@ static int alloc_branch(struct inode *in*/ parent =block_to_cpu (SYSV_SB (inode->i_sb), branch[n-1 ].key); bh =sb_getblk (inode->i_sb, parent); +if (!bh) { +sysv_free_block (inode->i_sb, branch[n].key); +break ; + }lock_buffer (bh);memset (bh->b_data,0 , blocksize); branch[n].bh = bh;
Greg Kroah-Hartman
maintainerPATCH 179/201 Bluetooth: L2CAP: Fix use-after-free in l2cap_sock_ready_cb
In reply to Greg Kroah-HartmanFrom: Sungwoo Kim <[email protected]>
commit 1728137b33c00d5a2b5110ed7aafb42e7c32e4a1 upstream.
l2cap_sock_release(sk) frees sk. However, sk's children are still alive and point to the already free'd sk's address.
To fix this, l2cap_sock_release(sk) also cleans sk's children.
==================================================================
BUG: KASAN: use-after-free in l2cap_sock_ready_cb+0xb7/0x100 net/bluetooth/l2cap_sock.c:1650 Read of size 8 at addr ffff888104617aa8 by task kworker/u3:0/276 CPU: 0 PID: 276 Comm: kworker/u3:0 Not tainted 6.2.0-00001-gef397bd4d5fb-dirty #59 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014 Workqueue: hci2 hci_rx_work Call Trace: <TASK> __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0x72/0x95 lib/dump_stack.c:106 print_address_description mm/kasan/report.c:306 [inline] print_report+0x175/0x478 mm/kasan/report.c:417 kasan_report+0xb1/0x130 mm/kasan/report.c:517 l2cap_sock_ready_cb+0xb7/0x100 net/bluetooth/l2cap_sock.c:1650 l2cap_chan_ready+0x10e/0x1e0 net/bluetooth/l2cap_core.c:1386 l2cap_config_req+0x753/0x9f0 net/bluetooth/l2cap_core.c:4480 l2cap_bredr_sig_cmd net/bluetooth/l2cap_core.c:5739 [inline] l2cap_sig_channel net/bluetooth/l2cap_core.c:6509 [inline] l2cap_recv_frame+0xe2e/0x43c0 net/bluetooth/l2cap_core.c:7788 l2cap_recv_acldata+0x6ed/0x7e0 net/bluetooth/l2cap_core.c:8506 hci_acldata_packet net/bluetooth/hci_core.c:3813 [inline] hci_rx_work+0x66e/0xbc0 net/bluetooth/hci_core.c:4048 process_one_work+0x4ea/0x8e0 kernel/workqueue.c:2289 worker_thread+0x364/0x8e0 kernel/workqueue.c:2436 kthread+0x1b9/0x200 kernel/kthread.c:376 ret_from_fork+0x2c/0x50 arch/x86/entry/entry_64.S:308 </TASK> Allocated by task 288: kasan_save_stack+0x22/0x50 mm/kasan/common.c:45 kasan_set_track+0x25/0x30 mm/kasan/common.c:52 ____kasan_kmalloc mm/kasan/common.c:374 [inline] __kasan_kmalloc+0x82/0x90 mm/kasan/common.c:383 kasan_kmalloc include/linux/kasan.h:211 [inline] __do_kmalloc_node mm/slab_common.c:968 [inline] __kmalloc+0x5a/0x140 mm/slab_common.c:981 kmalloc include/linux/slab.h:584 [inline] sk_prot_alloc+0x113/0x1f0 net/core/sock.c:2040 sk_alloc+0x36/0x3c0 net/core/sock.c:2093 l2cap_sock_alloc.constprop.0+0x39/0x1c0 net/bluetooth/l2cap_sock.c:1852 l2cap_sock_create+0x10d/0x220 net/bluetooth/l2cap_sock.c:1898 bt_sock_create+0x183/0x290 net/bluetooth/af_bluetooth.c:132 __sock_create+0x226/0x380 net/socket.c:1518 sock_create net/socket.c:1569 [inline] __sys_socket_create net/socket.c:1606 [inline] __sys_socket_create net/socket.c:1591 [inline] __sys_socket+0x112/0x200 net/socket.c:1639 __do_sys_socket net/socket.c:1652 [inline] __se_sys_socket net/socket.c:1650 [inline] __x64_sys_socket+0x40/0x50 net/socket.c:1650 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x3f/0x90 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x72/0xdc Freed by task 288: kasan_save_stack+0x22/0x50 mm/kasan/common.c:45 kasan_set_track+0x25/0x30 mm/kasan/common.c:52 kasan_save_free_info+0x2e/0x50 mm/kasan/generic.c:523 ____kasan_slab_free mm/kasan/common.c:236 [inline] ____kasan_slab_free mm/kasan/common.c:200 [inline] __kasan_slab_free+0x10a/0x190 mm/kasan/common.c:244 kasan_slab_free include/linux/kasan.h:177 [inline] slab_free_hook mm/slub.c:1781 [inline] slab_free_freelist_hook mm/slub.c:1807 [inline] slab_free mm/slub.c:3787 [inline] __kmem_cache_free+0x88/0x1f0 mm/slub.c:3800 sk_prot_free net/core/sock.c:2076 [inline] __sk_destruct+0x347/0x430 net/core/sock.c:2168 sk_destruct+0x9c/0xb0 net/core/sock.c:2183 __sk_free+0x82/0x220 net/core/sock.c:2194 sk_free+0x7c/0xa0 net/core/sock.c:2205 sock_put include/net/sock.h:1991 [inline] l2cap_sock_kill+0x256/0x2b0 net/bluetooth/l2cap_sock.c:1257 l2cap_sock_release+0x1a7/0x220 net/bluetooth/l2cap_sock.c:1428 __sock_release+0x80/0x150 net/socket.c:650 sock_close+0x19/0x30 net/socket.c:1368 __fput+0x17a/0x5c0 fs/file_table.c:320 task_work_run+0x132/0x1c0 kernel/task_work.c:179 resume_user_mode_work include/linux/resume_user_mode.h:49 [inline] exit_to_user_mode_loop kernel/entry/common.c:171 [inline] exit_to_user_mode_prepare+0x113/0x120 kernel/entry/common.c:203 __syscall_exit_to_user_mode_work kernel/entry/common.c:285 [inline] syscall_exit_to_user_mode+0x21/0x50 kernel/entry/common.c:296 do_syscall_64+0x4c/0x90 arch/x86/entry/common.c:86 entry_SYSCALL_64_after_hwframe+0x72/0xdc The buggy address belongs to the object at ffff888104617800 which belongs to the cache kmalloc-1k of size 1024
The buggy address is located 680 bytes inside of
1024-byte region [ffff888104617800, ffff888104617c00)
The buggy address belongs to the physical page:
page:00000000dbca6a80 refcount:1 mapcount:0 mapping:0000000000000000 index:0xffff888104614000 pfn:0x104614
head:00000000dbca6a80 order:2 compound_mapcount:0 subpages_mapcount:0 compound_pincount:0
flags: 0x200000000010200(slab|head|node=0|zone=2)
raw: 0200000000010200 ffff888100041dc0 ffffea0004212c10 ffffea0004234b10
raw: ffff888104614000 0000000000080002 00000001ffffffff 0000000000000000
page dumped because: kasan: bad access detected
Memory state around the buggy address:
ffff888104617980: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
ffff888104617a00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>ffff888104617a80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
^
ffff888104617b00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
ffff888104617b80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
==================================================================Ack: This bug is found by FuzzBT with a modified Syzkaller. Other contributors are Ruoyu Wu and Hui Peng.
--- net/bluetooth/l2cap_sock.c | 2 ++ 1 file changed, 2 insertions(+)
net/bluetooth/l2cap_sock.c +2 -0
@@ -45,6 +45,7 @@ static const struct proto_ops l2cap_sockstatic void l2cap_sock_init (struct sock *sk,struct sock *parent);static struct sock *l2cap_sock_alloc (struct net *net,struct socket *sock,int proto,gfp_t prio,int kern); +static void l2cap_sock_cleanup_listen (struct sock *parent);bool l2cap_is_socket (struct socket *sock) {
@@ -1414,6 +1415,7 @@ static int l2cap_sock_release(struct socif (!sk)return 0 ; +l2cap_sock_cleanup_listen (sk);bt_sock_unlink (&l2cap_sk_list, sk); err =l2cap_sock_shutdown (sock,SHUT_RDWR );
Greg Kroah-Hartman
maintainerPATCH 180/201 net: usbnet: Fix WARNING in usbnet_start_xmit/usb_submit_urb
In reply to Greg Kroah-HartmanFrom: Alan Stern <[email protected]>
commit 5e1627cb43ddf1b24b92eb26f8d958a3f5676ccb upstream.
The syzbot fuzzer identified a problem in the usbnet driver:
usb 1-1: BOGUS urb xfer, pipe 3 != type 1
WARNING: CPU: 0 PID: 754 at drivers/usb/core/urb.c:504 usb_submit_urb+0xed6/0x1880 drivers/usb/core/urb.c:504 Modules linked in: CPU: 0 PID: 754 Comm: kworker/0:2 Not tainted 6.4.0-rc7-syzkaller-00014-g692b7dc87ca6 #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 05/27/2023 Workqueue: mld mld_ifc_work RIP: 0010:usb_submit_urb+0xed6/0x1880 drivers/usb/core/urb.c:504 Code: 7c 24 18 e8 2c b4 5b fb 48 8b 7c 24 18 e8 42 07 f0 fe 41 89 d8 44 89 e1 4c 89 ea 48 89 c6 48 c7 c7 a0 c9 fc 8a e8 5a 6f 23 fb <0f> 0b e9 58 f8 ff ff e8 fe b3 5b fb 48 81 c5 c0 05 00 00 e9 84 f7 RSP: 0018:ffffc9000463f568 EFLAGS: 00010086 RAX: 0000000000000000 RBX: 0000000000000001 RCX: 0000000000000000 RDX: ffff88801eb28000 RSI: ffffffff814c03b7 RDI: 0000000000000001 RBP: ffff8881443b7190 R08: 0000000000000001 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000001 R12: 0000000000000003 R13: ffff88802a77cb18 R14: 0000000000000003 R15: ffff888018262500 FS: 0000000000000000(0000) GS:ffff8880b9800000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000556a99c15a18 CR3: 0000000028c71000 CR4: 0000000000350ef0 Call Trace: <TASK> usbnet_start_xmit+0xfe5/0x2190 drivers/net/usb/usbnet.c:1453 __netdev_start_xmit include/linux/netdevice.h:4918 [inline] netdev_start_xmit include/linux/netdevice.h:4932 [inline] xmit_one net/core/dev.c:3578 [inline] dev_hard_start_xmit+0x187/0x700 net/core/dev.c:3594
...
This bug is caused by the fact that usbnet trusts the bulk endpoint addresses its probe routine receives in the driver_info structure, and it does not check to see that these endpoints actually exist and have the expected type and directions.
The fix is simply to add such a check.
--- drivers/net/usb/usbnet.c | 6 ++++++ 1 file changed, 6 insertions(+)
drivers/net/usb/usbnet.c +6 -0
@@ -1738,6 +1738,10 @@ usbnet_probe (struct usb_interface *udev }else if (!info->in || !info->out) status =usbnet_get_endpoints (dev, udev);else { +u8 ep_addrs[3 ] = { + info->in +USB_DIR_IN , info->out +USB_DIR_OUT ,0 + }; + dev->in =usb_rcvbulkpipe (xdev, info->in); dev->out =usb_sndbulkpipe (xdev, info->out);if (!(info->flags &FLAG_NO_SETINT ))
@@ -1747,6 +1751,8 @@ usbnet_probe (struct usb_interface *udevelse status =0 ; +if (status ==0 && !usb_check_bulk_endpoints (udev, ep_addrs)) + status = -EINVAL ; }if (status >=0 && dev->status) status =init_status (dev, udev);
Greg Kroah-Hartman
maintainerPATCH 181/201 fs: Protect reconfiguration of sb read-write from racing writes
In reply to Greg Kroah-HartmanFrom: Jan Kara <[email protected]>
commit c541dce86c537714b6761a79a969c1623dfa222b upstream.
The reconfigure / remount code takes a lot of effort to protect filesystem's reconfiguration code from racing writes on remounting read-only. However during remounting read-only filesystem to read-write mode userspace writes can start immediately once we clear SB_RDONLY flag. This is inconvenient for example for ext4 because we need to do some writes to the filesystem (such as preparation of quota files) before we can take userspace writes so we are clearing SB_RDONLY flag before we are fully ready to accept userpace writes and syzbot has found a way to exploit this [1]. Also as far as I'm reading the code the filesystem remount code was protected from racing writes in the legacy mount path by the mount's MNT_READONLY flag so this is relatively new problem. It is actually fairly easy to protect remount read-write from racing writes using sb->s_readonly_remount flag so let's just do that instead of having to workaround these races in the filesystem code.
[1] https://lore.kernel.org/all/[email protected]/T/
Message-Id: <[email protected]>
--- fs/super.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-)
fs/super.c +10 -1
@@ -906,6 +906,7 @@ int reconfigure_super(struct fs_contextstruct super_block *sb = fc->root->d_sb;int retval;bool remount_ro = false; +bool remount_rw = false;bool force = fc->sb_flags &SB_FORCE ;if (fc->sb_flags_mask & ~MS_RMT_MASK )
@@ -922,7 +923,7 @@ int reconfigure_super(struct fs_contextif (!(fc->sb_flags &SB_RDONLY ) &&bdev_read_only (sb->s_bdev))return -EACCES ;#endif - + remount_rw = !(fc->sb_flags &SB_RDONLY ) &&sb_rdonly (sb); remount_ro = (fc->sb_flags &SB_RDONLY ) && !sb_rdonly (sb); }
@@ -952,6 +953,14 @@ int reconfigure_super(struct fs_contextif (retval)return retval; } + }else if (remount_rw) { +/* +* We set s_readonly_remount here to protect filesystem's +* reconfigure code from writes from userspace until +* reconfigure finishes. +*/ + sb->s_readonly_remount =1 ; +smp_wmb (); }if (fc->ops->reconfigure) {
Greg Kroah-Hartman
maintainerPATCH 182/201 ext2: Drop fragment support
In reply to Greg Kroah-HartmanFrom: Jan Kara <[email protected]>
commit 404615d7f1dcd4cca200e9a7a9df3a1dcae1dd62 upstream.
Ext2 has fields in superblock reserved for subblock allocation support. However that never landed. Drop the many years dead code.
--- fs/ext2/ext2.h | 12 ------------ fs/ext2/super.c | 23 ++++------------------- 2 files changed, 4 insertions(+), 31 deletions(-)
fs/ext2/ext2.h +0 -12
@@ -68,10 +68,7 @@ struct mb_cache;* second extended-fs super-block data in memory */ struct ext2_sb_info { -unsigned long s_frag_size;/* Size of a fragment in bytes */ -unsigned long s_frags_per_block;/* Number of fragments per block */ unsigned long s_inodes_per_block;/* Number of inodes per block */ -unsigned long s_frags_per_group;/* Number of fragments in a group */ unsigned long s_blocks_per_group;/* Number of blocks in a group */ unsigned long s_inodes_per_group;/* Number of inodes in a group */ unsigned long s_itb_per_group;/* Number of inode table blocks per group */
@@ -186,15 +183,6 @@ static inline struct ext2_sb_info *EXT2_#define EXT2_FIRST_INO (s) (EXT2_SB(s)->s_first_ino)/* -* Macro-instructions used to manage fragments -*/ -#define EXT2_MIN_FRAG_SIZE 1024 -#define EXT2_MAX_FRAG_SIZE 4096 -#define EXT2_MIN_FRAG_LOG_SIZE 10 -#define EXT2_FRAG_SIZE (s) (EXT2_SB(s)->s_frag_size) -#define EXT2_FRAGS_PER_BLOCK (s) (EXT2_SB(s)->s_frags_per_block) - -/* * Structure of a blocks group descriptor */ struct ext2_group_desc
fs/ext2/super.c +4 -19
@@ -673,10 +673,9 @@ static int ext2_setup_super (struct supe es->s_max_mnt_count =cpu_to_le16 (EXT2_DFL_MAX_MNT_COUNT );le16_add_cpu (&es->s_mnt_count,1 );if (test_opt (sb,DEBUG )) - ext2_msg(sb, KERN_INFO, "%s, %s, bs=%lu, fs=%lu, gc=%lu, " + ext2_msg(sb, KERN_INFO, "%s, %s, bs=%lu, gc=%lu, " "bpg=%lu, ipg=%lu, mo=%04lx]", EXT2FS_VERSION, EXT2FS_DATE, sb->s_blocksize, - sbi->s_frag_size, sbi->s_groups_count, EXT2_BLOCKS_PER_GROUP(sb), EXT2_INODES_PER_GROUP(sb),
@@ -1014,14 +1013,7 @@ static int ext2_fill_super(struct super_ } } - sbi->s_frag_size =EXT2_MIN_FRAG_SIZE << -le32_to_cpu (es->s_log_frag_size); -if (sbi->s_frag_size ==0 ) - goto cantfind_ext2; - sbi->s_frags_per_block = sb->s_blocksize / sbi->s_frag_size; - sbi->s_blocks_per_group =le32_to_cpu (es->s_blocks_per_group); - sbi->s_frags_per_group =le32_to_cpu (es->s_frags_per_group); sbi->s_inodes_per_group =le32_to_cpu (es->s_inodes_per_group); sbi->s_inodes_per_block = sb->s_blocksize /EXT2_INODE_SIZE (sb);
@@ -1047,11 +1039,10 @@ static int ext2_fill_super(struct super_ goto failed_mount; } -if (sb->s_blocksize != sbi->s_frag_size) { +if (es->s_log_frag_size != es->s_log_block_size) {ext2_msg (sb,KERN_ERR , -"error: fragsize %lu != blocksize %lu" -"(not supported yet)" , - sbi->s_frag_size, sb->s_blocksize); +"error: fragsize log %u != blocksize log %u" , +le32_to_cpu (es->s_log_frag_size), sb->s_blocksize_bits); goto failed_mount; }
@@ -1061,12 +1052,6 @@ static int ext2_fill_super(struct super_ sbi->s_blocks_per_group); goto failed_mount; } -if (sbi->s_frags_per_group > sb->s_blocksize *8 ) { -ext2_msg (sb,KERN_ERR , -"error: #fragments per group too big: %lu" , - sbi->s_frags_per_group); - goto failed_mount; - }if (sbi->s_inodes_per_group < sbi->s_inodes_per_block || sbi->s_inodes_per_group > sb->s_blocksize *8 ) { ext2_msg(sb, KERN_ERR,
Greg Kroah-Hartman
maintainerPATCH 183/201 mtd: rawnand: omap_elm: Fix incorrect type in assignment
In reply to Greg Kroah-HartmanFrom: Roger Quadros <[email protected]>
[ Upstream commit d8403b9eeee66d5dd81ecb9445800b108c267ce3 ]
Once the ECC word endianness is converted to BE32, we force cast it to u32 so we can use elm_write_reg() which in turn uses writel().
Fixes below sparse warnings:
drivers/mtd/nand/raw/omap_elm.c:180:37: sparse: expected unsigned int [usertype] val drivers/mtd/nand/raw/omap_elm.c:180:37: sparse: got restricted __be32 [usertype] drivers/mtd/nand/raw/omap_elm.c:185:37: sparse: expected unsigned int [usertype] val drivers/mtd/nand/raw/omap_elm.c:185:37: sparse: got restricted __be32 [usertype] drivers/mtd/nand/raw/omap_elm.c:190:37: sparse: expected unsigned int [usertype] val drivers/mtd/nand/raw/omap_elm.c:190:37: sparse: got restricted __be32 [usertype]
Quoted 1 line
Quoted 1 line
drivers/mtd/nand/raw/omap_elm.c:200:40: sparse: sparse: restricted__be32degrades to integer
drivers/mtd/nand/raw/omap_elm.c:206:39: sparse: sparse: restricted __be32 degrades to integer
drivers/mtd/nand/raw/omap_elm.c:210:37: sparse: expected unsigned int [assigned] [usertype] val drivers/mtd/nand/raw/omap_elm.c:210:37: sparse: got restricted __be32 [usertype] drivers/mtd/nand/raw/omap_elm.c:213:37: sparse: expected unsigned int [assigned] [usertype] val drivers/mtd/nand/raw/omap_elm.c:213:37: sparse: got restricted __be32 [usertype] drivers/mtd/nand/raw/omap_elm.c:216:37: sparse: expected unsigned int [assigned] [usertype] val drivers/mtd/nand/raw/omap_elm.c:216:37: sparse: got restricted __be32 [usertype] drivers/mtd/nand/raw/omap_elm.c:219:37: sparse: expected unsigned int [assigned] [usertype] val drivers/mtd/nand/raw/omap_elm.c:219:37: sparse: got restricted __be32 [usertype] drivers/mtd/nand/raw/omap_elm.c:222:37: sparse: expected unsigned int [assigned] [usertype] val drivers/mtd/nand/raw/omap_elm.c:222:37: sparse: got restricted __be32 [usertype] drivers/mtd/nand/raw/omap_elm.c:225:37: sparse: expected unsigned int [assigned] [usertype] val drivers/mtd/nand/raw/omap_elm.c:225:37: sparse: got restricted __be32 [usertype]
drivers/mtd/nand/raw/omap_elm.c:228:39: sparse: sparse: restricted __be32 degrades to integer
--- drivers/mtd/nand/raw/omap_elm.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-)
drivers/mtd/nand/raw/omap_elm.c +12 -12
@@ -174,17 +174,17 @@ static void elm_load_syndrome(struct elm_info *info,switch (info->bch_type) {case BCH8_ECC :/* syndrome fragment 0 = ecc[9-12B] */ - val =cpu_to_be32 (*(u32 *) &ecc[9 ]); + val = (__force u32 )cpu_to_be32 (*(u32 *)&ecc[9 ]);elm_write_reg (info, offset, val);/* syndrome fragment 1 = ecc[5-8B] */ offset +=4 ; - val =cpu_to_be32 (*(u32 *) &ecc[5 ]); + val = (__force u32 )cpu_to_be32 (*(u32 *)&ecc[5 ]);elm_write_reg (info, offset, val);/* syndrome fragment 2 = ecc[1-4B] */ offset +=4 ; - val =cpu_to_be32 (*(u32 *) &ecc[1 ]); + val = (__force u32 )cpu_to_be32 (*(u32 *)&ecc[1 ]);elm_write_reg (info, offset, val);/* syndrome fragment 3 = ecc[0B] */
@@ -194,35 +194,35 @@ static void elm_load_syndrome(struct elm_info *info,break ;case BCH4_ECC :/* syndrome fragment 0 = ecc[20-52b] bits */ - val = (cpu_to_be32 (*(u32 *) &ecc[3 ]) >>4 ) | + val = ((__force u32 )cpu_to_be32 (*(u32 *)&ecc[3 ]) >>4 ) | ((ecc[2 ] &0xf ) <<28 );elm_write_reg (info, offset, val);/* syndrome fragment 1 = ecc[0-20b] bits */ offset +=4 ; - val =cpu_to_be32 (*(u32 *) &ecc[0 ]) >>12 ; + val = (__force u32 )cpu_to_be32 (*(u32 *)&ecc[0 ]) >>12 ;elm_write_reg (info, offset, val);break ;case BCH16_ECC : - val =cpu_to_be32 (*(u32 *) &ecc[22 ]); + val = (__force u32 )cpu_to_be32 (*(u32 *)&ecc[22 ]);elm_write_reg (info, offset, val); offset +=4 ; - val =cpu_to_be32 (*(u32 *) &ecc[18 ]); + val = (__force u32 )cpu_to_be32 (*(u32 *)&ecc[18 ]);elm_write_reg (info, offset, val); offset +=4 ; - val =cpu_to_be32 (*(u32 *) &ecc[14 ]); + val = (__force u32 )cpu_to_be32 (*(u32 *)&ecc[14 ]);elm_write_reg (info, offset, val); offset +=4 ; - val =cpu_to_be32 (*(u32 *) &ecc[10 ]); + val = (__force u32 )cpu_to_be32 (*(u32 *)&ecc[10 ]);elm_write_reg (info, offset, val); offset +=4 ; - val =cpu_to_be32 (*(u32 *) &ecc[6 ]); + val = (__force u32 )cpu_to_be32 (*(u32 *)&ecc[6 ]);elm_write_reg (info, offset, val); offset +=4 ; - val =cpu_to_be32 (*(u32 *) &ecc[2 ]); + val = (__force u32 )cpu_to_be32 (*(u32 *)&ecc[2 ]);elm_write_reg (info, offset, val); offset +=4 ; - val =cpu_to_be32 (*(u32 *) &ecc[0 ]) >>16 ; + val = (__force u32 )cpu_to_be32 (*(u32 *)&ecc[0 ]) >>16 ;elm_write_reg (info, offset, val);break ;default :
Signature · 1 line
2.40.1
Greg Kroah-Hartman
maintainerPATCH 184/201 mtd: rawnand: fsl_upm: Fix an off-by one test in fun_exec_op()
In reply to Greg Kroah-HartmanFrom: Christophe JAILLET <[email protected]>
[ Upstream commit c6abce60338aa2080973cd95be0aedad528bb41f ]
'op-cs' is copied in 'fun->mchip_number' which is used to access the 'mchip_offsets' and the 'rnb_gpio' arrays.
These arrays have NAND_MAX_CHIPS elements, so the index must be below this limit.
Fix the sanity check in order to avoid the NAND_MAX_CHIPS value. This would lead to out-of-bound accesses.
--- drivers/mtd/nand/raw/fsl_upm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/mtd/nand/raw/fsl_upm.c +1 -1
@@ -136,7 +136,7 @@ static int fun_exec_op(struct nand_chip *chip, const struct nand_operation *op,unsigned int i;int ret; -if (op->cs >NAND_MAX_CHIPS ) +if (op->cs >=NAND_MAX_CHIPS )return -EINVAL ;if (check_only)
Signature · 1 line
2.40.1
Greg Kroah-Hartman
maintainerPATCH 185/201 powerpc/mm/altmap: Fix altmap boundary check
In reply to Greg Kroah-HartmanFrom: Aneesh Kumar K.V <[email protected]>
[ Upstream commit 6722b25712054c0f903b839b8f5088438dd04df3 ]
altmap->free includes the entire free space from which altmap blocks can be allocated. So when checking whether the kernel is doing altmap block free, compute the boundary correctly, otherwise memory hotunplug can fail.
--- arch/powerpc/mm/init_64.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
arch/powerpc/mm/init_64.c +1 -2
@@ -313,8 +313,7 @@ void __ref vmemmap_free(unsigned long start, unsigned long end, start =ALIGN_DOWN (start, page_size);if (altmap) { alt_start = altmap->base_pfn; - alt_end = altmap->base_pfn + altmap->reserve + - altmap->free + altmap->alloc + altmap->align; + alt_end = altmap->base_pfn + altmap->reserve + altmap->free; }pr_debug ("vmemmap_free %lx...%lx\n" , start, end);
Signature · 1 line
2.40.1
Greg Kroah-Hartman
maintainerPATCH 186/201 selftests/rseq: check if libc rseq support is registered
In reply to Greg Kroah-HartmanFrom: Michael Jeanson <[email protected]>
[ Upstream commit d1a997ba4c1bf65497d956aea90de42a6398f73a ]
When checking for libc rseq support in the library constructor, don't only depend on the symbols presence, check that the registration was completed.
This targets a scenario where the libc has rseq support but it is not wired for the current architecture in 'bits/rseq.h', we want to fallback to our internal registration mechanism.
Stable-dep-of: 3bcbc20942db ("selftests/rseq: Play nice with binaries statically linked against glibc 2.35+")
--- tools/testing/selftests/rseq/rseq.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
tools/testing/selftests/rseq/rseq.c +2 -1
@@ -111,7 +111,8 @@ void rseq_init(void) libc_rseq_offset_p =dlsym (RTLD_NEXT ,"__rseq_offset" ); libc_rseq_size_p =dlsym (RTLD_NEXT ,"__rseq_size" ); libc_rseq_flags_p =dlsym (RTLD_NEXT ,"__rseq_flags" ); -if (libc_rseq_size_p && libc_rseq_offset_p && libc_rseq_flags_p) { +if (libc_rseq_size_p && libc_rseq_offset_p && libc_rseq_flags_p && + *libc_rseq_size_p !=0 ) {/* rseq registration owned by glibc */ rseq_offset = *libc_rseq_offset_p; rseq_size = *libc_rseq_size_p;
Signature · 1 line
2.40.1
Greg Kroah-Hartman
maintainerPATCH 187/201 selftests/rseq: Play nice with binaries statically linked against glibc 2.35+
In reply to Greg Kroah-HartmanFrom: Sean Christopherson <[email protected]>
[ Upstream commit 3bcbc20942db5d738221cca31a928efc09827069 ]
To allow running rseq and KVM's rseq selftests as statically linked binaries, initialize the various "trampoline" pointers to point directly at the expect glibc symbols, and skip the dlysm() lookups if the rseq size is non-zero, i.e. the binary is statically linked *and* the libc registered its own rseq.
Define weak versions of the symbols so as not to break linking against libc versions that don't support rseq in any capacity.
The KVM selftests in particular are often statically linked so that they can be run on targets with very limited runtime environments, i.e. test machines.
Message-Id: <[email protected]>
--- tools/testing/selftests/rseq/rseq.c | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-)
tools/testing/selftests/rseq/rseq.c +22 -6
@@ -32,9 +32,17 @@#include "../kselftest.h" #include "rseq.h" -static const ptrdiff_t *libc_rseq_offset_p; -static const unsigned int *libc_rseq_size_p; -static const unsigned int *libc_rseq_flags_p; +/* +* Define weak versions to play nice with binaries that are statically linked +* against a libc that doesn't support registering its own rseq. +*/ +__weak ptrdiff_t __rseq_offset; +__weak unsigned int __rseq_size; +__weak unsigned int __rseq_flags; + +static const ptrdiff_t *libc_rseq_offset_p = &__rseq_offset; +static const unsigned int *libc_rseq_size_p = &__rseq_size; +static const unsigned int *libc_rseq_flags_p = &__rseq_flags;/* Offset from the thread pointer to the rseq area. */ ptrdiff_t rseq_offset;
@@ -108,9 +116,17 @@ int rseq_unregister_current_thread(void)static __attribute__((constructor))void rseq_init (void ) { - libc_rseq_offset_p =dlsym (RTLD_NEXT ,"__rseq_offset" ); - libc_rseq_size_p =dlsym (RTLD_NEXT ,"__rseq_size" ); - libc_rseq_flags_p =dlsym (RTLD_NEXT ,"__rseq_flags" ); +/* +* If the libc's registered rseq size isn't already valid, it may be +* because the binary is dynamically linked and not necessarily due to +* libc not having registered a restartable sequence. Try to find the +* symbols if that's the case. +*/ +if (!*libc_rseq_size_p) { + libc_rseq_offset_p =dlsym (RTLD_NEXT ,"__rseq_offset" ); + libc_rseq_size_p =dlsym (RTLD_NEXT ,"__rseq_size" ); + libc_rseq_flags_p =dlsym (RTLD_NEXT ,"__rseq_flags" ); + }if (libc_rseq_size_p && libc_rseq_offset_p && libc_rseq_flags_p && *libc_rseq_size_p !=0 ) {/* rseq registration owned by glibc */
Signature · 1 line
2.40.1
Greg Kroah-Hartman
maintainerPATCH 188/201 soundwire: bus: add better dev_dbg to track complete() calls
In reply to Greg Kroah-HartmanFrom: Pierre-Louis Bossart <[email protected]>
[ Upstream commit f1b690261247c9895f7a4b05d14a4026739134eb ]
Add a dev_dbg() log for both enumeration and initialization completion to better track suspend-resume issues.
Stable-dep-of: c40d6b3249b1 ("soundwire: fix enumeration completion")
--- drivers/soundwire/bus.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-)
drivers/soundwire/bus.c +8 -3
@@ -797,7 +797,7 @@ static void sdw_modify_slave_status(struct sdw_slave *slave,if (status ==SDW_SLAVE_UNATTACHED ) {dev_dbg (&slave->dev, -"%s: initializing completion for Slave %d\n" , +"%s: initializing enumeration and init completion for Slave %d\n" , __func__, slave->dev_num);init_completion (&slave->enumeration_complete);
@@ -806,7 +806,7 @@ static void sdw_modify_slave_status(struct sdw_slave *slave, }else if ((status ==SDW_SLAVE_ATTACHED ) && (slave->status ==SDW_SLAVE_UNATTACHED )) {dev_dbg (&slave->dev, -"%s: signaling completion for Slave %d\n" , +"%s: signaling enumeration completion for Slave %d\n" , __func__, slave->dev_num);complete (&slave->enumeration_complete);
@@ -1734,8 +1734,13 @@ int sdw_handle_slave_status(struct sdw_bus *bus,if (ret)dev_err (slave->bus->dev,"Update Slave status failed:%d\n" , ret); -if (attached_initializing) +if (attached_initializing) { +dev_dbg (&slave->dev, +"%s: signaling initialization completion for Slave %d\n" , + __func__, slave->dev_num); +complete (&slave->initialization_complete); + } }return ret;
Signature · 1 line
2.40.1
Greg Kroah-Hartman
maintainerPATCH 189/201 soundwire: bus: pm_runtime_request_resume on peripheral attachment
In reply to Greg Kroah-HartmanFrom: Pierre-Louis Bossart <[email protected]>
[ Upstream commit e557bca49b812908f380c56b5b4b2f273848b676 ]
In typical use cases, the peripheral becomes pm_runtime active as a result of the ALSA/ASoC framework starting up a DAI. The parent/child hierarchy guarantees that the manager device will be fully resumed beforehand.
There is however a corner case where the manager device may become pm_runtime active, but without ALSA/ASoC requesting any functionality from the peripherals. In this case, the hardware peripheral device will report as ATTACHED and its initialization routine will be executed. If this initialization routine initiates any sort of deferred processing, there is a possibility that the manager could suspend without the peripheral suspend sequence being invoked: from the pm_runtime framework perspective, the peripheral is *already* suspended.
To avoid such disconnects between hardware state and pm_runtime state, this patch adds an asynchronous pm_request_resume() upon successful attach/initialization which will result in the proper resume/suspend sequence to be followed on the peripheral side.
Stable-dep-of: c40d6b3249b1 ("soundwire: fix enumeration completion")
--- drivers/soundwire/bus.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)
drivers/soundwire/bus.c +12 -0
@@ -1740,6 +1740,18 @@ int sdw_handle_slave_status(struct sdw_bus *bus, __func__, slave->dev_num);complete (&slave->initialization_complete); + +/* +* If the manager became pm_runtime active, the peripherals will be +* restarted and attach, but their pm_runtime status may remain +* suspended. If the 'update_slave_status' callback initiates +* any sort of deferred processing, this processing would not be +* cancelled on pm_runtime suspend. +* To avoid such zombie states, we queue a request to resume. +* This would be a no-op in case the peripheral was being resumed +* by e.g. the ALSA/ASoC framework. +*/ +pm_request_resume (&slave->dev); } }
Signature · 1 line
2.40.1
Greg Kroah-Hartman
maintainerPATCH 190/201 soundwire: fix enumeration completion
In reply to Greg Kroah-HartmanFrom: Johan Hovold <[email protected]>
[ Upstream commit c40d6b3249b11d60e09d81530588f56233d9aa44 ]
The soundwire subsystem uses two completion structures that allow drivers to wait for soundwire device to become enumerated on the bus and initialised by their drivers, respectively.
The code implementing the signalling is currently broken as it does not signal all current and future waiters and also uses the wrong reinitialisation function, which can potentially lead to memory corruption if there are still waiters on the queue.
Not signalling future waiters specifically breaks sound card probe deferrals as codec drivers can not tell that the soundwire device is already attached when being reprobed. Some codec runtime PM implementations suffer from similar problems as waiting for enumeration during resume can also timeout despite the device already having been enumerated.
--- drivers/soundwire/bus.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
drivers/soundwire/bus.c +4 -4
@@ -800,8 +800,8 @@ static void sdw_modify_slave_status(struct sdw_slave *slave,"%s: initializing enumeration and init completion for Slave %d\n" , __func__, slave->dev_num); -init_completion (&slave->enumeration_complete); -init_completion (&slave->initialization_complete); +reinit_completion (&slave->enumeration_complete); +reinit_completion (&slave->initialization_complete); }else if ((status ==SDW_SLAVE_ATTACHED ) && (slave->status ==SDW_SLAVE_UNATTACHED )) {
@@ -809,7 +809,7 @@ static void sdw_modify_slave_status(struct sdw_slave *slave,"%s: signaling enumeration completion for Slave %d\n" , __func__, slave->dev_num); -complete (&slave->enumeration_complete); +complete_all (&slave->enumeration_complete); } slave->status = status;mutex_unlock (&slave->bus->bus_lock);
@@ -1739,7 +1739,7 @@ int sdw_handle_slave_status(struct sdw_bus *bus,"%s: signaling initialization completion for Slave %d\n" , __func__, slave->dev_num); -complete (&slave->initialization_complete); +complete_all (&slave->initialization_complete);/* * If the manager became pm_runtime active, the peripherals will be
Signature · 1 line
2.40.1
Greg Kroah-Hartman
maintainerPATCH 191/201 PM / wakeirq: support enabling wake-up irq after runtime_suspend called
In reply to Greg Kroah-HartmanFrom: Chunfeng Yun <[email protected]>
[ Upstream commit 259714100d98b50bf04d36a21bf50ca8b829fc11 ]
When the dedicated wake IRQ is level trigger, and it uses the device's low-power status as the wakeup source, that means if the device is not in low-power state, the wake IRQ will be triggered if enabled; For this case, need enable the wake IRQ after running the device's ->runtime_suspend() which make it enter low-power state.
e.g.
Assume the wake IRQ is a low level trigger type, and the wakeup signal comes from the low-power status of the device.
The wakeup signal is low level at running time (0), and becomes high level when the device enters low-power state (runtime_suspend
(1) is called), a wakeup event at (2) make the device exit low-power state, then the wakeup signal also becomes low level.
------------------
| ^ ^|
---------------- | | --------------
|<---(0)--->|<--(1)--| (3) (2) (4)
if enable the wake IRQ before running runtime_suspend during (0), a wake IRQ will arise, it causes resume immediately;
it works if enable wake IRQ ( e.g. at (3) or (4)) after running ->runtime_suspend().
This patch introduces a new status WAKE_IRQ_DEDICATED_REVERSE to optionally support enabling wake IRQ after running ->runtime_suspend().
Stable-dep-of: 8527beb12087 ("PM: sleep: wakeirq: fix wake irq arming")
--- drivers/base/power/power.h | 7 ++- drivers/base/power/runtime.c | 6 ++- drivers/base/power/wakeirq.c | 101 +++++++++++++++++++++++++++-------- include/linux/pm_wakeirq.h | 9 +++- 4 files changed, 96 insertions(+), 27 deletions(-)
drivers/base/power/power.h +5 -2
@@ -25,8 +25,10 @@ extern u64 pm_runtime_active_time(struct device *dev);#define WAKE_IRQ_DEDICATED_ALLOCATED BIT(0)#define WAKE_IRQ_DEDICATED_MANAGED BIT(1) +#define WAKE_IRQ_DEDICATED_REVERSE BIT(2)#define WAKE_IRQ_DEDICATED_MASK (WAKE_IRQ_DEDICATED_ALLOCATED | \ - WAKE_IRQ_DEDICATED_MANAGED) + WAKE_IRQ_DEDICATED_MANAGED | \ + WAKE_IRQ_DEDICATED_REVERSE)struct wake_irq {struct device *dev;
@@ -39,7 +41,8 @@ extern void dev_pm_arm_wake_irq(struct wake_irq *wirq);extern void dev_pm_disarm_wake_irq (struct wake_irq *wirq);extern void dev_pm_enable_wake_irq_check (struct device *dev,bool can_change_status); -extern void dev_pm_disable_wake_irq_check (struct device *dev); +extern void dev_pm_disable_wake_irq_check (struct device *dev,bool cond_disable); +extern void dev_pm_enable_wake_irq_complete (struct device *dev);#ifdef CONFIG_PM_SLEEP
drivers/base/power/runtime.c +4 -2
@@ -675,6 +675,8 @@ static int rpm_suspend(struct device *dev, int rpmflags)if (retval) goto fail; +dev_pm_enable_wake_irq_complete (dev); + no_callback:__update_runtime_status (dev,RPM_SUSPENDED );pm_runtime_deactivate_timer (dev);
@@ -720,7 +722,7 @@ static int rpm_suspend(struct device *dev, int rpmflags)return retval; fail: -dev_pm_disable_wake_irq_check (dev); +dev_pm_disable_wake_irq_check (dev, true);__update_runtime_status (dev,RPM_ACTIVE ); dev->power.deferred_resume = false;wake_up_all (&dev->power.wait_queue);
@@ -903,7 +905,7 @@ static int rpm_resume(struct device *dev, int rpmflags) callback =RPM_GET_CALLBACK (dev, runtime_resume); -dev_pm_disable_wake_irq_check (dev); +dev_pm_disable_wake_irq_check (dev, false); retval =rpm_callback (callback, dev);if (retval) {__update_runtime_status (dev,RPM_SUSPENDED );
drivers/base/power/wakeirq.c +80 -21
146 lines not on this page · raw message
include/linux/pm_wakeirq.h +7 -2
@@ -17,8 +17,8 @@#ifdef CONFIG_PM extern int dev_pm_set_wake_irq (struct device *dev,int irq); -extern int dev_pm_set_dedicated_wake_irq (struct device *dev, -int irq); +extern int dev_pm_set_dedicated_wake_irq (struct device *dev,int irq); +extern int dev_pm_set_dedicated_wake_irq_reverse (struct device *dev,int irq);extern void dev_pm_clear_wake_irq (struct device *dev);extern void dev_pm_enable_wake_irq (struct device *dev);extern void dev_pm_disable_wake_irq (struct device *dev);
@@ -35,6 +35,11 @@ static inline int dev_pm_set_dedicated_wake_irq(struct device *dev, int irq)return 0 ; } +static inline int dev_pm_set_dedicated_wake_irq_reverse (struct device *dev,int irq) +{ +return 0 ; +} +static inline void dev_pm_clear_wake_irq (struct device *dev) { }
Signature · 1 line
2.40.1
Greg Kroah-Hartman
maintainerPATCH 192/201 PM: sleep: wakeirq: fix wake irq arming
In reply to Greg Kroah-HartmanFrom: Johan Hovold <[email protected]>
[ Upstream commit 8527beb12087238d4387607597b4020bc393c4b4 ]
The decision whether to enable a wake irq during suspend can not be done based on the runtime PM state directly as a driver may use wake irqs without implementing runtime PM. Such drivers specifically leave the state set to the default 'suspended' and the wake irq is thus never enabled at suspend.
Add a new wake irq flag to track whether a dedicated wake irq has been enabled at runtime suspend and therefore must not be enabled at system suspend.
Note that pm_runtime_enabled() can not be used as runtime PM is always disabled during late suspend.
--- drivers/base/power/power.h | 1 + drivers/base/power/wakeirq.c | 12 ++++++++---- 2 files changed, 9 insertions(+), 4 deletions(-)
drivers/base/power/power.h +1 -0
@@ -29,6 +29,7 @@ extern u64 pm_runtime_active_time(struct device *dev);#define WAKE_IRQ_DEDICATED_MASK (WAKE_IRQ_DEDICATED_ALLOCATED | \ WAKE_IRQ_DEDICATED_MANAGED | \ WAKE_IRQ_DEDICATED_REVERSE) +#define WAKE_IRQ_DEDICATED_ENABLED BIT(3)struct wake_irq {struct device *dev;
drivers/base/power/wakeirq.c +8 -4
@@ -317,8 +317,10 @@ void dev_pm_enable_wake_irq_check(struct device *dev,return ; enable: -if (!can_change_status || !(wirq->status &WAKE_IRQ_DEDICATED_REVERSE )) +if (!can_change_status || !(wirq->status &WAKE_IRQ_DEDICATED_REVERSE )) {enable_irq (wirq->irq); + wirq->status |=WAKE_IRQ_DEDICATED_ENABLED ; + } }/**
@@ -339,8 +341,10 @@ void dev_pm_disable_wake_irq_check(struct device *dev, bool cond_disable)if (cond_disable && (wirq->status &WAKE_IRQ_DEDICATED_REVERSE ))return ; -if (wirq->status &WAKE_IRQ_DEDICATED_MANAGED ) +if (wirq->status &WAKE_IRQ_DEDICATED_MANAGED ) { + wirq->status &= ~WAKE_IRQ_DEDICATED_ENABLED ;disable_irq_nosync (wirq->irq); + } }/**
@@ -379,7 +383,7 @@ void dev_pm_arm_wake_irq(struct wake_irq *wirq)if (device_may_wakeup (wirq->dev)) {if (wirq->status &WAKE_IRQ_DEDICATED_ALLOCATED && - !pm_runtime_status_suspended (wirq->dev)) + !(wirq->status &WAKE_IRQ_DEDICATED_ENABLED ))enable_irq (wirq->irq);enable_irq_wake (wirq->irq);
@@ -402,7 +406,7 @@ void dev_pm_disarm_wake_irq(struct wake_irq *wirq)disable_irq_wake (wirq->irq);if (wirq->status &WAKE_IRQ_DEDICATED_ALLOCATED && - !pm_runtime_status_suspended (wirq->dev)) + !(wirq->status &WAKE_IRQ_DEDICATED_ENABLED ))disable_irq_nosync (wirq->irq); } }
Signature · 1 line
2.40.1
Greg Kroah-Hartman
maintainerPATCH 193/201 exfat: speed up iterate/lookup by fixing start point of traversing cluster chain
In reply to Greg Kroah-HartmanFrom: Hyeongseok Kim <[email protected]>
[ Upstream commit c6e2f52e3051e8d898d38840104638ca8bbcdec2 ]
When directory iterate and lookup is called, there's a buggy rewinding of start point for traversing cluster chain to the parent directory entry's first cluster. This caused repeated cluster chain traversing from the first entry of the parent directory that would show worse performance if huge amounts of files exist under the parent directory. Fix not to rewind, make continue from currently referenced cluster and dir entry.
Tested with 50,000 files under single directory / 256GB sdcard, with command "time ls -l > /dev/null",
Before : 0m08.69s real 0m00.27s user 0m05.91s system After : 0m07.01s real 0m00.25s user 0m04.34s system
Stable-dep-of: d42334578eba ("exfat: check if filename entries exceeds max filename length")
--- fs/exfat/dir.c | 19 +++++++++++++------ fs/exfat/exfat_fs.h | 2 +- fs/exfat/namei.c | 9 ++++++++- 3 files changed, 22 insertions(+), 8 deletions(-)
fs/exfat/dir.c +13 -6
@@ -148,7 +148,7 @@ static int exfat_readdir(struct inode *inode, loff_t *cpos, struct exfat_dir_ent 0); *uni_name.name =0x0 ; -exfat_get_uniname_from_ext_entry (sb, &dir, dentry, +exfat_get_uniname_from_ext_entry (sb, &clu, i, uni_name.name); exfat_utf16_to_nls(sb, &uni_name, dir_entry->namebuf.lfn,
@@ -902,14 +902,19 @@ enum { };/* -* return values: -* >= 0 : return dir entiry position with the name in dir -* -ENOENT : entry with the name does not exist -* -EIO : I/O error +* @ei: inode info of parent directory +* @p_dir: directory structure of parent directory +* @num_entries:entry size of p_uniname +* @hint_opt: If p_uniname is found, filled with optimized dir/entry +* for traversing cluster chain. +* @return: +* >= 0: file directory entry position where the name exists +* -ENOENT: entry with the name does not exist +* -EIO: I/O error */ int exfat_find_dir_entry (struct super_block *sb,struct exfat_inode_info *ei,struct exfat_chain *p_dir,struct exfat_uni_name *p_uniname, -int num_entries,unsigned int type) +int num_entries,unsigned int type,struct exfat_hint *hint_opt) {int i, rewind =0 , dentry =0 , end_eidx =0 , num_ext =0 , len;int order, step, name_len =0 ;
@@ -986,6 +991,8 @@ int exfat_find_dir_entry(struct super_block *sb, struct exfat_inode_info *ei,if (entry_type ==TYPE_FILE || entry_type ==TYPE_DIR ) { step =DIRENT_STEP_FILE ; + hint_opt->clu = clu.dir; + hint_opt->eidx = i;if (type ==TYPE_ALL || type == entry_type) { num_ext = ep->dentry.file.num_ext; step =DIRENT_STEP_STRM ;
fs/exfat/exfat_fs.h +1 -1
@@ -458,7 +458,7 @@ void exfat_update_dir_chksum_with_entry_set(struct exfat_entry_set_cache *es);int exfat_calc_num_entries (struct exfat_uni_name *p_uniname);int exfat_find_dir_entry (struct super_block *sb,struct exfat_inode_info *ei,struct exfat_chain *p_dir,struct exfat_uni_name *p_uniname, -int num_entries,unsigned int type); +int num_entries,unsigned int type,struct exfat_hint *hint_opt);int exfat_alloc_new_dir (struct inode *inode,struct exfat_chain *clu);int exfat_find_location (struct super_block *sb,struct exfat_chain *p_dir,int entry,sector_t *sector,int *offset);
fs/exfat/namei.c +8 -1
@@ -596,6 +596,8 @@ static int exfat_find(struct inode *dir, struct qstr *qname,struct exfat_inode_info *ei =EXFAT_I (dir);struct exfat_dentry *ep, *ep2;struct exfat_entry_set_cache *es; +/* for optimized dir & entry to prevent long traverse of cluster chain */ +struct exfat_hint hint_opt;if (qname->len ==0 )return -ENOENT ;
@@ -619,7 +621,7 @@ static int exfat_find(struct inode *dir, struct qstr *qname,/* search the file name for directories */ dentry =exfat_find_dir_entry (sb, ei, &cdir, &uni_name, - num_entries,TYPE_ALL ); + num_entries,TYPE_ALL , &hint_opt);if (dentry <0 )return dentry;/* -error value */
@@ -628,6 +630,11 @@ static int exfat_find(struct inode *dir, struct qstr *qname, info->entry = dentry; info->num_subdirs =0 ; +/* adjust cdir to the optimized value */ + cdir.dir = hint_opt.clu; +if (cdir.flags &ALLOC_NO_FAT_CHAIN ) + cdir.size -= dentry / sbi->dentries_per_clu; + dentry = hint_opt.eidx; es =exfat_get_dentry_set (sb, &cdir, dentry,ES_2_ENTRIES );if (!es)return -EIO ;
Signature · 1 line
2.40.1
Greg Kroah-Hartman
maintainerPATCH 194/201 exfat: support dynamic allocate bh for exfat_entry_set_cache
In reply to Greg Kroah-HartmanFrom: Yuezhang Mo <[email protected]>
[ Upstream commit a3ff29a95fde16906304455aa8c0bd84eb770258 ]
In special cases, a file or a directory may occupied more than 19 directory entries, pre-allocating 3 bh is not enough. Such as
- Support vendor secondary directory entry in the future.
- Since file directory entry is damaged, the SecondaryCount field is bigger than 18.
So this commit supports dynamic allocation of bh.
Stable-dep-of: d42334578eba ("exfat: check if filename entries exceeds max filename length")
--- fs/exfat/dir.c | 15 +++++++++++++++ fs/exfat/exfat_fs.h | 5 ++++- 2 files changed, 19 insertions(+), 1 deletion(-)
fs/exfat/dir.c +15 -0
@@ -609,6 +609,10 @@ int exfat_free_dentry_set(struct exfat_entry_set_cache *es, int sync)bforget (es->bh[i]); else brelse(es->bh[i]); + +if (IS_DYNAMIC_ES (es)) +kfree (es->bh); +kfree (es);return err; }
@@ -844,6 +848,7 @@ struct exfat_entry_set_cache *exfat_get_dentry_set(struct super_block *sb,/* byte offset in sector */ off =EXFAT_BLK_OFFSET (byte_offset, sb); es->start_off = off; + es->bh = es->__bh;/* sector offset in cluster */ sec =EXFAT_B_TO_BLK (byte_offset, sb);
@@ -863,6 +868,16 @@ struct exfat_entry_set_cache *exfat_get_dentry_set(struct super_block *sb, es->num_entries = num_entries; num_bh =EXFAT_B_TO_BLK_ROUND_UP (off + num_entries *DENTRY_SIZE , sb); +if (num_bh >ARRAY_SIZE (es->__bh)) { + es->bh =kmalloc_array (num_bh,sizeof (*es->bh),GFP_KERNEL ); +if (!es->bh) { +brelse (bh); +kfree (es); +return NULL ; + } + es->bh[0 ] = bh; + } +for (i =1 ; i < num_bh; i++) {/* get the next sector */ if (exfat_is_last_sector_in_cluster (sbi, sec)) {
fs/exfat/exfat_fs.h +4 -1
@@ -170,10 +170,13 @@ struct exfat_entry_set_cache {bool modified;unsigned int start_off;int num_bh; -struct buffer_head *bh[DIR_CACHE_SIZE ]; +struct buffer_head *__bh[DIR_CACHE_SIZE ]; +struct buffer_head **bh;unsigned int num_entries; }; +#define IS_DYNAMIC_ES (es) ((es)->__bh != (es)->bh) +struct exfat_dir_entry {struct exfat_chain dir;int entry;
Signature · 1 line
2.40.1
Greg Kroah-Hartman
maintainerPATCH 195/201 exfat: check if filename entries exceeds max filename length
In reply to Greg Kroah-HartmanFrom: Namjae Jeon <[email protected]>
[ Upstream commit d42334578eba1390859012ebb91e1e556d51db49 ]
exfat_extract_uni_name copies characters from a given file name entry into the 'uniname' variable. This variable is actually defined on the stack of the exfat_readdir() function. According to the definition of the 'exfat_uni_name' type, the file name should be limited 255 characters (+ null teminator space), but the exfat_get_uniname_from_ext_entry() function can write more characters because there is no check if filename entries exceeds max filename length. This patch add the check not to copy filename characters when exceeding max filename length.
--- fs/exfat/dir.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)
fs/exfat/dir.c +7 -2
@@ -33,6 +33,7 @@ static void exfat_get_uniname_from_ext_e {int i;struct exfat_entry_set_cache *es; +unsigned int uni_len =0 , len; es =exfat_get_dentry_set (sb, p_dir, entry,ES_ALL_ENTRIES );if (!es)
@@ -51,7 +52,10 @@ static void exfat_get_uniname_from_ext_eif (exfat_get_entry_type (ep) !=TYPE_EXTEND )break ; -exfat_extract_uni_name (ep, uniname); + len =exfat_extract_uni_name (ep, uniname); + uni_len += len; +if (len !=EXFAT_FILE_NAME_LEN || uni_len >=MAX_NAME_LENGTH ) +break ; uniname +=EXFAT_FILE_NAME_LEN ; }
@@ -1042,7 +1046,8 @@ rewind:if (entry_type ==TYPE_EXTEND ) {unsigned short entry_uniname[16 ], unichar; -if (step !=DIRENT_STEP_NAME ) { +if (step !=DIRENT_STEP_NAME || + name_len >=MAX_NAME_LENGTH ) { step =DIRENT_STEP_FILE ;continue ; }
Greg Kroah-Hartman
maintainerPATCH 196/201 mt76: move band capabilities in mt76_phy
In reply to Greg Kroah-HartmanFrom: Lorenzo Bianconi <[email protected]>
[ Upstream commit 48dbce5cb1ba3ce5b2ed3e997bcb1e4697d41b71 ]
This is a preliminary patch to move properly support mt7915 dbdc
Stable-dep-of: 421033deb915 ("wifi: mt76: mt7615: do not advertise 5 GHz on first phy of MT7615D (DBDC)")
--- drivers/net/wireless/mediatek/mt76/mac80211.c | 8 ++++---- drivers/net/wireless/mediatek/mt76/mt76.h | 2 +- .../net/wireless/mediatek/mt76/mt7603/eeprom.c | 2 +- drivers/net/wireless/mediatek/mt76/mt7615/dma.c | 2 +- .../net/wireless/mediatek/mt76/mt7615/eeprom.c | 16 ++++++++-------- .../net/wireless/mediatek/mt76/mt76x0/eeprom.c | 6 +++--- drivers/net/wireless/mediatek/mt76/mt76x0/init.c | 4 ++-- drivers/net/wireless/mediatek/mt76/mt76x0/phy.c | 4 ++-- .../net/wireless/mediatek/mt76/mt76x02_eeprom.c | 8 ++++---- .../net/wireless/mediatek/mt76/mt7915/eeprom.c | 8 ++++---- drivers/net/wireless/mediatek/mt76/mt7915/init.c | 5 ++--- 11 files changed, 32 insertions(+), 33 deletions(-)
drivers/net/wireless/mediatek/mt76/mac80211.c +4 -4
@@ -160,9 +160,9 @@ static void mt76_init_stream_cap(struct mt76_phy *phy,void mt76_set_stream_caps (struct mt76_phy *phy,bool vht) { -if (phy->dev->cap.has_2ghz) +if (phy->cap.has_2ghz)mt76_init_stream_cap (phy, &phy->sband_2g.sband, false); -if (phy->dev->cap.has_5ghz) +if (phy->cap.has_5ghz)mt76_init_stream_cap (phy, &phy->sband_5g.sband, vht); }EXPORT_SYMBOL_GPL (mt76_set_stream_caps);
@@ -463,13 +463,13 @@ int mt76_register_device(struct mt76_dev *dev, bool vht,dev_set_drvdata (dev->dev, dev);mt76_phy_init (dev, hw); -if (dev->cap.has_2ghz) { +if (phy->cap.has_2ghz) { ret =mt76_init_sband_2g (dev, rates, n_rates);if (ret)return ret; } -if (dev->cap.has_5ghz) { +if (phy->cap.has_5ghz) { ret =mt76_init_sband_5g (dev, rates +4 , n_rates -4 , vht);if (ret)return ret;
drivers/net/wireless/mediatek/mt76/mt76.h +1 -1
@@ -561,6 +561,7 @@ struct mt76_phy {struct mt76_channel_state *chan_state;ktime_t survey_time; +struct mt76_hw_cap cap;struct mt76_sband sband_2g;struct mt76_sband sband_5g;
@@ -630,7 +631,6 @@ struct mt76_dev {struct debugfs_blob_wrapper eeprom;struct debugfs_blob_wrapper otp; -struct mt76_hw_cap cap;struct mt76_rate_power rate_power;
drivers/net/wireless/mediatek/mt76/mt7603/eeprom.c +1 -1
@@ -170,7 +170,7 @@ int mt7603_eeprom_init(struct mt7603_dev *dev) } eeprom = (u8 *)dev->mt76.eeprom.data; - dev->mt76.cap.has_2ghz = true; + dev->mphy.cap.has_2ghz = true;memcpy (dev->mt76.macaddr, eeprom +MT_EE_MAC_ADDR ,ETH_ALEN );/* Check for 1SS devices */
drivers/net/wireless/mediatek/mt76/mt7615/dma.c +1 -1
@@ -202,7 +202,7 @@ int mt7615_dma_init(struct mt7615_dev *dev)int ret;/* Increase buffer size to receive large VHT MPDUs */ -if (dev->mt76.cap.has_5ghz) +if (dev->mphy.cap.has_5ghz) rx_buf_size *=2 ;mt76_dma_attach (&dev->mt76);
drivers/net/wireless/mediatek/mt76/mt7615/eeprom.c +8 -8
@@ -100,20 +100,20 @@ mt7615_eeprom_parse_hw_band_cap(struct mt7615_dev *dev)if (is_mt7663 (&dev->mt76)) {/* dual band */ - dev->mt76.cap.has_2ghz = true; - dev->mt76.cap.has_5ghz = true; + dev->mphy.cap.has_2ghz = true; + dev->mphy.cap.has_5ghz = true;return ; }if (is_mt7622 (&dev->mt76)) {/* 2GHz only */ - dev->mt76.cap.has_2ghz = true; + dev->mphy.cap.has_2ghz = true;return ; }if (is_mt7611 (&dev->mt76)) {/* 5GHz only */ - dev->mt76.cap.has_5ghz = true; + dev->mphy.cap.has_5ghz = true;return ; }
@@ -121,17 +121,17 @@ mt7615_eeprom_parse_hw_band_cap(struct mt7615_dev *dev) eeprom[MT_EE_WIFI_CONF]);switch (val) {case MT_EE_5GHZ : - dev->mt76.cap.has_5ghz = true; + dev->mphy.cap.has_5ghz = true;break ;case MT_EE_2GHZ : - dev->mt76.cap.has_2ghz = true; + dev->mphy.cap.has_2ghz = true;break ;case MT_EE_DBDC : dev->dbdc_support = true;/* fall through */ default : - dev->mt76.cap.has_2ghz = true; - dev->mt76.cap.has_5ghz = true; + dev->mphy.cap.has_2ghz = true; + dev->mphy.cap.has_5ghz = true;break ; } }
drivers/net/wireless/mediatek/mt76/mt76x0/eeprom.c +3 -3
@@ -52,15 +52,15 @@ static void mt76x0_set_chip_cap(struct mt76x02_dev *dev)mt76x02_eeprom_parse_hw_cap (dev);dev_dbg (dev->mt76.dev,"2GHz %d 5GHz %d\n" , - dev->mt76.cap.has_2ghz, dev->mt76.cap.has_5ghz); + dev->mphy.cap.has_2ghz, dev->mphy.cap.has_5ghz);if (dev->no_2ghz) { - dev->mt76.cap.has_2ghz = false; + dev->mphy.cap.has_2ghz = false;dev_dbg (dev->mt76.dev,"mask out 2GHz support\n" ); }if (is_mt7630 (dev)) { - dev->mt76.cap.has_5ghz = false; + dev->mphy.cap.has_5ghz = false;dev_dbg (dev->mt76.dev,"mask out 5GHz support\n" ); }
drivers/net/wireless/mediatek/mt76/mt76x0/init.c +2 -2
@@ -245,7 +245,7 @@ int mt76x0_register_device(struct mt76x02_dev *dev)if (ret)return ret; -if (dev->mt76.cap.has_5ghz) { +if (dev->mphy.cap.has_5ghz) {struct ieee80211_supported_band *sband; sband = &dev->mphy.sband_5g.sband;
@@ -253,7 +253,7 @@ int mt76x0_register_device(struct mt76x02_dev *dev)mt76x0_init_txpower (dev, sband); } -if (dev->mt76.cap.has_2ghz) +if (dev->mphy.cap.has_2ghz)mt76x0_init_txpower (dev, &dev->mphy.sband_2g.sband);mt76x02_init_debugfs (dev);
drivers/net/wireless/mediatek/mt76/mt76x0/phy.c +2 -2
@@ -447,11 +447,11 @@ static void mt76x0_phy_ant_select(struct mt76x02_dev *dev)else coex3 |=BIT (4 ); coex3 |=BIT (3 ); -if (dev->mt76.cap.has_2ghz) +if (dev->mphy.cap.has_2ghz) wlan |=BIT (6 ); }else {/* sigle antenna mode */ -if (dev->mt76.cap.has_5ghz) { +if (dev->mphy.cap.has_5ghz) { coex3 |=BIT (3 ) |BIT (4 ); }else { wlan |=BIT (6 );
drivers/net/wireless/mediatek/mt76/mt76x02_eeprom.c +4 -4
@@ -75,14 +75,14 @@ void mt76x02_eeprom_parse_hw_cap(struct mt76x02_dev *dev)switch (FIELD_GET (MT_EE_NIC_CONF_0_BOARD_TYPE , val)) {case BOARD_TYPE_5GHZ : - dev->mt76.cap.has_5ghz = true; + dev->mphy.cap.has_5ghz = true;break ;case BOARD_TYPE_2GHZ : - dev->mt76.cap.has_2ghz = true; + dev->mphy.cap.has_2ghz = true;break ;default : - dev->mt76.cap.has_2ghz = true; - dev->mt76.cap.has_5ghz = true; + dev->mphy.cap.has_2ghz = true; + dev->mphy.cap.has_5ghz = true;break ; } }
drivers/net/wireless/mediatek/mt76/mt7915/eeprom.c +4 -4
@@ -57,14 +57,14 @@ static void mt7915_eeprom_parse_hw_cap(struct mt7915_dev *dev) val =FIELD_GET (MT_EE_WIFI_CONF_BAND_SEL , val);switch (val) {case MT_EE_5GHZ : - dev->mt76.cap.has_5ghz = true; + dev->mphy.cap.has_5ghz = true;break ;case MT_EE_2GHZ : - dev->mt76.cap.has_2ghz = true; + dev->mphy.cap.has_2ghz = true;break ;default : - dev->mt76.cap.has_2ghz = true; - dev->mt76.cap.has_5ghz = true; + dev->mphy.cap.has_2ghz = true; + dev->mphy.cap.has_5ghz = true;break ; }
drivers/net/wireless/mediatek/mt76/mt7915/init.c +2 -3
@@ -528,10 +528,9 @@ void mt7915_set_stream_he_caps(struct mt7915_phy *phy) {struct ieee80211_sband_iftype_data *data;struct ieee80211_supported_band *band; -struct mt76_dev *mdev = &phy->dev->mt76;int n; -if (mdev->cap.has_2ghz) { +if (phy->mt76->cap.has_2ghz) { data = phy->iftype[NL80211_BAND_2GHZ ]; n =mt7915_init_he_caps (phy,NL80211_BAND_2GHZ , data);
@@ -540,7 +539,7 @@ void mt7915_set_stream_he_caps(struct mt7915_phy *phy) band->n_iftype_data = n; } -if (mdev->cap.has_5ghz) { +if (phy->mt76->cap.has_5ghz) { data = phy->iftype[NL80211_BAND_5GHZ ]; n =mt7915_init_he_caps (phy,NL80211_BAND_5GHZ , data);
Signature · 1 line
2.40.1
Greg Kroah-Hartman
maintainerPATCH 197/201 mt76: mt7615: Fix fall-through warnings for Clang
In reply to Greg Kroah-HartmanFrom: Gustavo A. R. Silva <[email protected]>
[ Upstream commit f12758f6f929dbcd37abdb1d91d245539eca48f8 ]
In preparation to enable -Wimplicit-fallthrough for Clang, fix a warning by replacing a /* fall through */ comment with the new pseudo-keyword macro fallthrough; instead of letting the code fall through to the next case.
Notice that Clang doesn't recognize /* fall through */ comments as implicit fall-through markings.
Stable-dep-of: 421033deb915 ("wifi: mt76: mt7615: do not advertise 5 GHz on first phy of MT7615D (DBDC)")
--- drivers/net/wireless/mediatek/mt76/mt7615/eeprom.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/net/wireless/mediatek/mt76/mt7615/eeprom.c +1 -1
@@ -128,7 +128,7 @@ mt7615_eeprom_parse_hw_band_cap(struct mt7615_dev *dev)break ;case MT_EE_DBDC : dev->dbdc_support = true; -/* fall through */ + fallthrough;default : dev->mphy.cap.has_2ghz = true; dev->mphy.cap.has_5ghz = true;
Signature · 1 line
2.40.1
Greg Kroah-Hartman
maintainerPATCH 198/201 wifi: mt76: mt7615: do not advertise 5 GHz on first phy of MT7615D (DBDC)
In reply to Greg Kroah-HartmanFrom: Paul Fertser <[email protected]>
[ Upstream commit 421033deb91521aa6a9255e495cb106741a52275 ]
On DBDC devices the first (internal) phy is only capable of using 2.4 GHz band, and the 5 GHz band is exposed via a separate phy object, so avoid the false advertising.
--- drivers/net/wireless/mediatek/mt76/mt7615/eeprom.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7615/eeprom.c +3 -3
@@ -123,12 +123,12 @@ mt7615_eeprom_parse_hw_band_cap(struct mt7615_dev *dev)case MT_EE_5GHZ : dev->mphy.cap.has_5ghz = true;break ; -case MT_EE_2GHZ : - dev->mphy.cap.has_2ghz = true; -break ;case MT_EE_DBDC : dev->dbdc_support = true; fallthrough; +case MT_EE_2GHZ : + dev->mphy.cap.has_2ghz = true; +break ;default : dev->mphy.cap.has_2ghz = true; dev->mphy.cap.has_5ghz = true;
Signature · 1 line
2.40.1
Greg Kroah-Hartman
maintainerPATCH 199/201 ARM: dts: imx: add usb alias
In reply to Greg Kroah-HartmanFrom: Peng Fan <[email protected]>
[ Upstream commit 5c8b3b8a182cbc1ccdfcdeea9b25dd2c12a8148f ]
Add usb alias for bootloader searching the controller in correct order.
Stable-dep-of: ee70b908f77a ("ARM: dts: nxp/imx6sll: fix wrong property name in usbphy node")
--- arch/arm/boot/dts/imx6qdl.dtsi | 4 ++++ arch/arm/boot/dts/imx6sl.dtsi | 3 +++ arch/arm/boot/dts/imx6sll.dtsi | 2 ++ arch/arm/boot/dts/imx6sx.dtsi | 3 +++ arch/arm/boot/dts/imx6ul.dtsi | 2 ++ arch/arm/boot/dts/imx7d.dtsi | 6 ++++++ arch/arm/boot/dts/imx7s.dtsi | 2 ++ 7 files changed, 22 insertions(+)
arch/arm/boot/dts/imx6qdl.dtsi +4 -0
@@ -45,6 +45,10 @@ aliases { spi1 = &ecspi2; spi2 = &ecspi3; spi3 = &ecspi4; + usb0 = &usbotg; + usb1 = &usbh1; + usb2 = &usbh2; + usb3 = &usbh3; usbphy0 = &usbphy1; usbphy1 = &usbphy2; };
arch/arm/boot/dts/imx6sl.dtsi +3 -0
@@ -39,6 +39,9 @@ aliases { spi1 = &ecspi2; spi2 = &ecspi3; spi3 = &ecspi4; + usb0 = &usbotg1; + usb1 = &usbotg2; + usb2 = &usbh; usbphy0 = &usbphy1; usbphy1 = &usbphy2; };
arch/arm/boot/dts/imx6sll.dtsi +2 -0
@@ -36,6 +36,8 @@ aliases { spi1 = &ecspi2; spi3 = &ecspi3; spi4 = &ecspi4; + usb0 = &usbotg1; + usb1 = &usbotg2; usbphy0 = &usbphy1; usbphy1 = &usbphy2; };
arch/arm/boot/dts/imx6sx.dtsi +3 -0
@@ -49,6 +49,9 @@ aliases { spi2 = &ecspi3; spi3 = &ecspi4; spi4 = &ecspi5; + usb0 = &usbotg1; + usb1 = &usbotg2; + usb2 = &usbh; usbphy0 = &usbphy1; usbphy1 = &usbphy2; };
arch/arm/boot/dts/imx6ul.dtsi +2 -0
@@ -47,6 +47,8 @@ aliases { spi1 = &ecspi2; spi2 = &ecspi3; spi3 = &ecspi4; + usb0 = &usbotg1; + usb1 = &usbotg2; usbphy0 = &usbphy1; usbphy1 = &usbphy2; };
arch/arm/boot/dts/imx7d.dtsi +6 -0
@@ -7,6 +7,12 @@ #include <dt-bindings/reset/imx7-reset.h> / { + aliases { + usb0 = &usbotg1; + usb1 = &usbotg2; + usb2 = &usbh; + }; + cpus { cpu0: cpu@0 { clock-frequency = <996000000>;
arch/arm/boot/dts/imx7s.dtsi +2 -0
@@ -47,6 +47,8 @@ aliases { spi1 = &ecspi2; spi2 = &ecspi3; spi3 = &ecspi4; + usb0 = &usbotg1; + usb1 = &usbh; }; cpus {
Signature · 1 line
2.40.1
Greg Kroah-Hartman
maintainerPATCH 200/201 ARM: dts: imx6sll: fixup of operating points
In reply to Greg Kroah-HartmanFrom: Andreas Kemnade <[email protected]>
[ Upstream commit 1875903019ea6e32e6e544c1631b119e4fd60b20 ]
Make operating point definitions comply with binding specifications.
Stable-dep-of: ee70b908f77a ("ARM: dts: nxp/imx6sll: fix wrong property name in usbphy node")
--- arch/arm/boot/dts/imx6sll.dtsi | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-)
arch/arm/boot/dts/imx6sll.dtsi +10 -12
@@ -51,20 +51,18 @@ cpu0: cpu@0 { device_type = "cpu"; reg = <0>; next-level-cache = <&L2>; - operating-points = < + operating-points = /* kHz uV */ - 996000 1275000 - 792000 1175000 - 396000 1075000 - 198000 975000 - >; - fsl,soc-operating-points = < + <996000 1275000>, + <792000 1175000>, + <396000 1075000>, + <198000 975000>; + fsl,soc-operating-points = /* ARM kHz SOC-PU uV */ - 996000 1175000 - 792000 1175000 - 396000 1175000 - 198000 1175000 - >; + <996000 1175000>, + <792000 1175000>, + <396000 1175000>, + <198000 1175000>; clock-latency = <61036>; /* two CLK32 periods */ #cooling-cells = <2>; clocks = <&clks IMX6SLL_CLK_ARM>,
Signature · 1 line
2.40.1
Greg Kroah-Hartman
maintainerPATCH 201/201 ARM: dts: nxp/imx6sll: fix wrong property name in usbphy node
In reply to Greg Kroah-HartmanFrom: Xu Yang <[email protected]>
[ Upstream commit ee70b908f77a9d8f689dea986f09e6d7dc481934 ]
Property name "phy-3p0-supply" is used instead of "phy-reg_3p0-supply".
--- arch/arm/boot/dts/imx6sll.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/boot/dts/imx6sll.dtsi +1 -1
@@ -552,7 +552,7 @@ usbphy2: usb-phy@20ca000 { reg = <0x020ca000 0x1000>; interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>; clocks = <&clks IMX6SLL_CLK_USBPHY2>; - phy-reg_3p0-supply = <®_3p0>; + phy-3p0-supply = <®_3p0>; fsl,anatop = <&anatop>; };
Signature · 1 line
2.40.1
Quoted 5 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.10.190 release. There are 201 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Quoted 8 lines
Responses should be made by Fri, 11 Aug 2023 10:36:10 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.10.190-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.10.y
and the diffstat can be found below.
For RCU,
thanks,
- Joel
Quoted 812 lines
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:Greg Kroah-Hartman <[email protected]>
Linux 5.10.190-rc1Xu Yang <[email protected]>
ARM: dts: nxp/imx6sll: fix wrong property name in usbphy nodeAndreas Kemnade <[email protected]>
ARM: dts: imx6sll: fixup of operating pointsPeng Fan <[email protected]>
ARM: dts: imx: add usb aliasPaul Fertser <[email protected]>
wifi: mt76: mt7615: do not advertise 5 GHz on first phy of MT7615D (DBDC)Gustavo A. R. Silva <[email protected]>
mt76: mt7615: Fix fall-through warnings for ClangLorenzo Bianconi <[email protected]>
mt76: move band capabilities inmt76_phyNamjae Jeon <[email protected]>
exfat: check if filename entries exceeds max filename lengthYuezhang Mo <[email protected]>
exfat: support dynamic allocate bh forexfat_entry_set_cacheHyeongseok Kim <[email protected]>
exfat: speed up iterate/lookup by fixing start point of traversing cluster chainJohan Hovold <[email protected]>
PM: sleep: wakeirq: fix wake irq armingChunfeng Yun <[email protected]>
PM / wakeirq: support enabling wake-up irq afterruntime_suspendcalledJohan Hovold <[email protected]>
soundwire: fix enumeration completionPierre-Louis Bossart <[email protected]>
soundwire: bus:pm_runtime_request_resumeon peripheral attachmentPierre-Louis Bossart <[email protected]>
soundwire: bus: add betterdev_dbgto trackcomplete()callsSean Christopherson <[email protected]>
selftests/rseq: Play nice with binaries statically linked against glibc 2.35+Michael Jeanson <[email protected]>
selftests/rseq: check if libc rseq support is registeredAneesh Kumar K.V <[email protected]>
powerpc/mm/altmap: Fix altmap boundary checkChristophe JAILLET <[email protected]>
mtd: rawnand:fsl_upm: Fix an off-by one test infun_exec_op()Roger Quadros <[email protected]>
mtd: rawnand:omap_elm: Fix incorrect type in assignmentJan Kara <[email protected]>
ext2: Drop fragment supportJan Kara <[email protected]>
fs: Protect reconfiguration of sb read-write from racing writesAlan Stern <[email protected]>
net: usbnet: Fix WARNING in usbnet_start_xmit/usb_submit_urbSungwoo Kim <[email protected]>
Bluetooth: L2CAP: Fix use-after-free inl2cap_sock_ready_cbPrince Kumar Maurya <[email protected]>
fs/sysv: Null check to prevent null-ptr-deref bugDouglas Anderson <[email protected]>
tracing: Fix sleeping while atomic in kdb ftdumpLinus Torvalds <[email protected]>
file: reinstatef_poslocking optimization for regular filesGuchun Chen <[email protected]>
drm/ttm: check null pointer before accessing when swappingAleksa Sarai <[email protected]>
open: makeRESOLVE_CACHEDcorrectly test forO_TMPFILEJiri Olsa <[email protected]>
bpf: Disable preemption inbpf_event_outputLaszlo Ersek <[email protected]>
net:tap_open(): setsk_uidfromcurrent_fsuid()Laszlo Ersek <[email protected]>
net:tun_chr_open(): setsk_uidfromcurrent_fsuid()Dinh Nguyen <[email protected]>
arm64: dts: stratix10: fix incorrect I2C property for SCL signalArseniy Krasnov <[email protected]>
mtd: rawnand: meson: fix OOB available bytes for ECCOlivier Maignial <[email protected]>
mtd: spinand: toshiba: Fixecc_get_statusSungjong Seo <[email protected]>
exfat: releases_lockbefore callingdir_emit()gaoming <[email protected]>
exfat: use kvmalloc_array/kvfree instead of kmalloc_array/kfreeXiubo Li <[email protected]>
ceph: defer stopping mdscdelayed_workRoss Maynard <[email protected]>
USB: zaurus: Add ID for A-300/B-500/C-700Ilya Dryomov <[email protected]>
libceph: fix potential hang inceph_osdc_notify()Steffen Maier <[email protected]>
scsi: zfcp: Deferfc_rportblocking until after ADISC responseEric Dumazet <[email protected]>
tcp_metrics: fix data-race intcpm_suck_dst()vs fastopenEric Dumazet <[email protected]>
tcp_metrics: annotate data-races around tm->tcpm_netEric Dumazet <[email protected]>
tcp_metrics: annotate data-races around tm->tcpm_vals[]Eric Dumazet <[email protected]>
tcp_metrics: annotate data-races around tm->tcpm_lockEric Dumazet <[email protected]>
tcp_metrics: annotate data-races around tm->tcpm_stampEric Dumazet <[email protected]>
tcp_metrics: fixaddr_same()helperJianbo Liu <[email protected]>
net/mlx5:fs_core: Skip the FTs in the sameFS_TYPE_PRIO_CHAINSfs_prioJianbo Liu <[email protected]>
net/mlx5:fs_core: Makefind_closest_ftmore genericBenjamin Poirier <[email protected]>
vxlan: Fix nexthop hash sizeYue Haibing <[email protected]>
ip6mr: Fixskb_under_panicinip6mr_cache_report()Alexandra Winter <[email protected]>
s390/qeth: Don't call dev_close/dev_open (DOWN/UP)Lin Ma <[email protected]>
net: dcb: choose correct policy to parseDCB_ATTR_BCNMark Brown <[email protected]>
net: netsec: Ignore 'phy-mode' on SynQuacer in DT modeDan Carpenter <[email protected]>
net:ll_temac: fix error checking ofirq_of_parse_and_map()Yang Yingliang <[email protected]>
net:ll_temac: Switch to usedev_err_probe()helperTomas Glozar <[email protected]>
bpf: sockmap: Removepreempt_disableinsock_map_sk_acquirevalis <[email protected]>
net/sched:cls_route: No longer copytcf_resulton update to avoid use-after-freevalis <[email protected]>
net/sched:cls_fw: No longer copytcf_resulton update to avoid use-after-freevalis <[email protected]>
net/sched:cls_u32: No longer copytcf_resulton update to avoid use-after-freeEric Dumazet <[email protected]>
net: add missing data-race annotation forsk_ll_usecEric Dumazet <[email protected]>
net: add missing data-race annotations around sk->sk_peek_offEric Dumazet <[email protected]>
net: add missing READ_ONCE(sk->sk_rcvbuf) annotationEric Dumazet <[email protected]>
net: add missing READ_ONCE(sk->sk_sndbuf) annotationEric Dumazet <[email protected]>
net: add missing READ_ONCE(sk->sk_rcvlowat) annotationEric Dumazet <[email protected]>
net: annotate data-races around sk->sk_max_pacing_rateChengfeng Ye <[email protected]>
mISDN: hfcpci: Fix potential deadlock on &hc->lockJamal Hadi Salim <[email protected]>
net: sched:cls_u32: Fix match key mis-addressingGeorg Müller <[email protected]>
perf testuprobe_from_different_cu: Skip if there is no gccYuanjun Gong <[email protected]>
net: dsa: fix value check inbcm_sf2_sw_probe()Lin Ma <[email protected]>
rtnetlink: letrtnl_bridge_setlinkchecksIFLA_BRIDGE_MODElengthLin Ma <[email protected]>
bpf: Add length check forSK_DIAG_BPF_STORAGE_REQ_MAP_FDparsingYuanjun Gong <[email protected]>
net/mlx5e: fix return value check inmlx5e_ipsec_remove_trailer()Zhengchao Shao <[email protected]>
net/mlx5: DR, fix memory leak inmlx5dr_cmd_create_reformat_ctxIlan Peer <[email protected]>
wifi: cfg80211: Fix return value in scan logicHeiko Carstens <[email protected]>
KVM: s390: fix sthyi error handling[email protected] <[email protected]>
word-at-a-time: use the same return type forhas_zeroregardless of endiannessHugo Villeneuve <[email protected]>
arm64: dts: imx8mn-var-som: add missing pull-up for onboard PHY reset pinmuxBart Van Assche <[email protected]>
loop: Select I/O scheduler 'none' from insideadd_disk()Peter Zijlstra <[email protected]>
perf: Fix function pointer caseJens Axboe <[email protected]>
io_uring: gate iowait schedule on having pending requestsNadav Amit <[email protected]>
x86/kprobes: Fix JNG/JNLE emulationMasami Hiramatsu (Google) <[email protected]>
x86/kprobes: Update kcb status flag after singlesteppingWei Yongjun <[email protected]>
x86/kprobes: Move 'inline' to the beginning of thekprobe_is_ss()declarationMasami Hiramatsu <[email protected]>
x86/kprobes: Fix to identify indirect jmp and others using range caseMasami Hiramatsu <[email protected]>
x86/kprobes: Use int3 instead of debug trap for single-stepMasami Hiramatsu <[email protected]>
x86/kprobes: Identify far indirect JMP correctlyMasami Hiramatsu <[email protected]>
x86/kprobes: Retrieve correct opcode for group instructionMasami Hiramatsu <[email protected]>
x86/kprobes: Do not decode opcode inresume_execution()Gustavo A. R. Silva <[email protected]>
kprobes/x86: Fix fall-through warnings for ClangThomas Petazzoni <[email protected]>
ASoC: cs42l51: fix driver to properly autoload with automatic module loadingJens Axboe <[email protected]>
io_uring: treat-EAGAINforREQ_F_NOWAITas final for io-wqMatthieu Baerts <[email protected]>
selftests: mptcp: depend onSYN_COOKIESRafael J. Wysocki <[email protected]>
cpufreq:intel_pstate: Drop ACPI_PSSstates table patchingRafael J. Wysocki <[email protected]>
ACPI: processor: perflib: Avoid updating frequency QoS unnecessarilyRafael J. Wysocki <[email protected]>
ACPI: processor: perflib: Use the "no limit" frequency QoSChristian König <[email protected]>
drm/ttm: makettm_bo_unpinmore defensiveJoe Thornber <[email protected]>
dm cache policy smq: ensure IO doesn't prevent cleaner policy progressXiubo Li <[email protected]>
ceph: never send metrics ifdisable_send_metricsis setMark Brown <[email protected]>
ASoC: wm8904: Fill the cache forWM8904_ADC_TEST_0registerStefan Haberland <[email protected]>
s390/dasd: fix hanging device after quiesce/resumeJason Wang <[email protected]>
virtio-net: fix race between set queues and probeFilipe Manana <[email protected]>
btrfs: check if the transaction was aborted atbtrfs_wait_for_commit()Larry Finger <[email protected]>
staging: r8712: Fix memory leak in _r8712_init_xmit_priv()Christophe JAILLET <[email protected]>
staging: rtl8712: Use constants from <linux/ieee80211.h>Sean Christopherson <[email protected]>
KVM: VMX: Don't fudge CR0 and CR4 for restricted L2 guestSean Christopherson <[email protected]>
KVM: nVMX: Do not clear CR3 load/store exiting bits if L1 wants 'emSean Christopherson <[email protected]>
KVM: VMX: Foldept_update_paging_mode_cr0()back intovmx_set_cr0()Sean Christopherson <[email protected]>
KVM: VMX: Invert handling of CR0.WP for EPT without unrestricted guestMarc Zyngier <[email protected]>
irqchip/gic-v4.1: Properly lock VPEs when doing a directLPI invalidationJonas Gorski <[email protected]>
irq-bcm6345-l1: Do not assume a fixed block to cpu mappingAlexander Steffen <[email protected]>
tpm_tis: Explicitly check for error codeTrond Myklebust <[email protected]>
nfsd: Remove incorrect check innfsd4_validate_stateidChristian Brauner <[email protected]>
file: always lock position forFMODE_ATOMIC_POSFilipe Manana <[email protected]>
btrfs: check for commit error atbtrfs_attach_transaction_barrier()Gilles Buloz <[email protected]>
hwmon: (nct7802) Fix for temp6 (PECI1) processed even if PECI1 disabledLuka Guzenko <[email protected]>
ALSA: hda/relatek: Enable Mute LED on HP 250 G8Chaoyuan Peng <[email protected]>
tty:n_gsm: fix UAF ingsm_cleanup_muxZhang Shurong <[email protected]>
staging: ks7010: potential buffer overflow inks_wlan_set_encode_ext()Greg Kroah-Hartman <[email protected]>
Documentation:security-bugs.rst: clarify CVE handlingGreg Kroah-Hartman <[email protected]>
Documentation:security-bugs.rst: update preferences when dealing with the linux-distros groupDan Carpenter <[email protected]>
Revert "usb: xhci: tegra: Fix error check"Ricardo Ribalda <[email protected]>
usb: xhci-mtk: set the dmamax_seg_sizeŁukasz Bartosik <[email protected]>
USB: quirks: add quirk for Focusrite ScarlettGuiting Shen <[email protected]>
usb: ohci-at91: Fix the unhandle interrupt when resumeJisheng Zhang <[email protected]>
usb: dwc3: don't reset device side if dwc3 was configured as host-onlyGratian Crisan <[email protected]>
usb: dwc3: pci: skip BYT GPIO lookup table for hardwired phyJakub Vanek <[email protected]>
Revert "usb: dwc3: core: Enable AutoRetry feature in the controller"Marc Kleine-Budde <[email protected]>
can:gs_usb:gs_can_close(): add missing set of CAN state toCAN_STATE_STOPPEDJohan Hovold <[email protected]>
USB: serial: simple: sort driver entriesOliver Neukum <[email protected]>
USB: serial: simple: add Kaufmann RKS+CAN VCPMohsen Tahmasebi <[email protected]>
USB: serial: option: add Quectel EC200A module supportJerry Meng <[email protected]>
USB: serial: option: support QuectelEM060K_128Samuel Holland <[email protected]>
serial: sifive: Fixsifive_serial_console_setup()sectionRuihong Luo <[email protected]>
serial: 8250_dw: Preserve original value of DLF registerJohan Hovold <[email protected]>
serial: qcom-geni: drop bogus runtime pm state updateZqiang <[email protected]>
USB: gadget: Fix the memory leak inraw_gadgetdriverDan Carpenter <[email protected]>
Revert "usb: gadget: tegra-xudc: Fix error check integra_xudc_powerdomain_init()"Zheng Yejian <[email protected]>
tracing: Fix warning intrace_buffered_event_disable()Zheng Yejian <[email protected]>
ring-buffer: Fix wrong stat of cpu_buffer->readArnd Bergmann <[email protected]>
ata: pata_ns87415: mark ns87560_tf_read staticYu Kuai <[email protected]>
dm raid: protectmd_stop()with 'reconfig_mutex'Yu Kuai <[email protected]>
dm raid: clean up four equivalent goto tags inraid_ctr()Yu Kuai <[email protected]>
dm raid: fix missingreconfig_mutexunlock inraid_ctr()error pathsBart Van Assche <[email protected]>
block: Fix a source code comment ininclude/uapi/linux/blkzoned.hMatus Gajdos <[email protected]>
ASoC:fsl_spdif: Silence output on stopGaosheng Cui <[email protected]>
drm/msm: FixIS_ERR_OR_NULL()vs NULL check ina5xx_submit_in_rb()Thomas Bogendoerfer <[email protected]>
RDMA/mthca: Fix crash when polling CQ for shared QPsRob Clark <[email protected]>
drm/msm/adreno: Fix snapshotBINDLESS_DATAsizeDmitry Baryshkov <[email protected]>
drm/msm/dpu: drop enumdpu_core_perf_data_bus_idDan Carpenter <[email protected]>
RDMA/mlx4: Make check for invalid flags stricterFedor Pchelkin <[email protected]>
tipc: stop tipc crypto on failure intipc_node_createYuanjun Gong <[email protected]>
tipc: check return value ofpskb_trim()Yuanjun Gong <[email protected]>
benet: fix return value check inbe_lancer_xmit_workarounds()Lin Ma <[email protected]>
net/sched: mqprio: Add length check for TCA_MQPRIO_{MAX/MIN}_RATE64Vladimir Oltean <[email protected]>
net/sched: mqprio: add extack tomqprio_parse_nlattr()Vladimir Oltean <[email protected]>
net/sched: mqprio: refactor nlattr parsing to a separate functionPablo Neira Ayuso <[email protected]>
netfilter:nf_tables: disallow rule addition to bound chain viaNFTA_RULE_CHAIN_IDPablo Neira Ayuso <[email protected]>
netfilter:nf_tables: skip immediate deactivate in_PREPARE_ERRORPablo Neira Ayuso <[email protected]>
netfilter: nftables: add helper function to validate set element dataFlorian Westphal <[email protected]>
netfilter:nft_set_rbtree: fix overlap expiration walkMaxim Mikityanskiy <[email protected]>
platform/x86: msi-laptop: Fix rfkill out-of-sync on MSI Wind U100Hangbin Liu <[email protected]>
team: reset team's flags when down link is P2P deviceHangbin Liu <[email protected]>
bonding: reset bond's flags when down link is P2P deviceJedrzej Jagielski <[email protected]>
ice: Fix memory management inice_ethtool_fdir.cStewart Smith <[email protected]>
tcp: Reduce chance of collisions ininet6_hashfn().Maciej Żenczykowski <[email protected]>
ipv6 addrconf: fix bug where deleting a mngtmpaddr can create a new temporary addressYuanjun Gong <[email protected]>
ethernet: atheros: fix return value check inatl1e_tso_csum()Harshit Mogalapalli <[email protected]>
phy: hisilicon: Fix an out of bounds check inhisi_inno_phy_probe()Jiri Benc <[email protected]>
vxlan: calculate correct header length for GPERoopa Prabhu <[email protected]>
vxlan: move to its own directoryJijie Shao <[email protected]>
net: hns3: fix wrong bw weight of disabled tc issueGuangbin Huang <[email protected]>
net: hns3: reconstruct functionhclge_ets_validate()Jiawen Wu <[email protected]>
net: phy: marvell10g: fix 88x3310 power upWang Ming <[email protected]>
i40e: Fix an NULL vsIS_ERR()bug fordebugfs_create_dir()Sakari Ailus <[email protected]>
media: staging: atomisp: selectV4L2_FWNODEAdrien Thierry <[email protected]>
phy: qcom-snps-femto-v2: properly enable ref clockAdrien Thierry <[email protected]>
phy: qcom-snps-femto-v2: keepcfg_ahb_clkenabled during runtime suspendKrzysztof Kozlowski <[email protected]>
phy: qcom-snps: correct structqcom_snps_hsphykerneldocYuan Can <[email protected]>
phy: qcom-snps: Usedev_err_probe()to simplify codeChao Yu <[email protected]>
ext4: fix to check return value offreeze_bdev()inext4_shutdown()Heiner Kallweit <[email protected]>
pwm: meson: fix handling of period/duty if greater thanUINT_MAXUwe Kleine-König <[email protected]>
pwm: meson: Simplify duplicated per-channel trackingMasami Hiramatsu <[email protected]>
tracing: Show real address for trace event argumentsChristian König <[email protected]>
drm/ttm: never consider pinned BOs for eviction&swapChristian König <[email protected]>
drm/ttm: add ttm_bo_pin()/ttm_bo_unpin() v2Alexander Aring <[email protected]>
fs: dlm: interrupt posix locks only when process is killedAlexander Aring <[email protected]>
dlm: rearrange async condition returnAlexander Aring <[email protected]>
dlm: cleanupplock_opvsplock_xopIlpo Järvinen <[email protected]>
PCI/ASPM: Avoid link retraining raceIlpo Järvinen <[email protected]>
PCI/ASPM: Factor outpcie_wait_for_retrain()Bjorn Helgaas <[email protected]>
PCI/ASPM: Return 0 or-ETIMEDOUTfrompcie_retrain_link()Christophe JAILLET <[email protected]>
i2c: nomadik: Remove a useless call in the remove functionAndi Shyti <[email protected]>
i2c: nomadik: Usedevm_clk_get_enabled()Andi Shyti <[email protected]>
i2c: nomadik: Remove unnecessary goto labelMarkus Elfring <[email protected]>
i2c: Improve size determinationsMarkus Elfring <[email protected]>
i2c: Delete error messages for failed memory allocationsFilipe Manana <[email protected]>
btrfs: fix extent buffer leak after tree mod log failure atsplit_node()Filipe Manana <[email protected]>
btrfs: fix race between quota disable and relocationHans de Goede <[email protected]>
gpio: tps68470: Maketps68470_gpio_output()always set the initial valueOndrej Mosnacek <[email protected]>
io_uring: don't audit the capability check inio_uring_create()Claudio Imbrenda <[email protected]>
KVM: s390: pv: fix index value of replaced ASCE-------------
Diffstat:
Documentation/admin-guide/security-bugs.rst | 37 +- Makefile | 4 +- arch/arm/boot/dts/imx6qdl.dtsi | 4 + arch/arm/boot/dts/imx6sl.dtsi | 3 + arch/arm/boot/dts/imx6sll.dtsi | 26 +- arch/arm/boot/dts/imx6sx.dtsi | 3 + arch/arm/boot/dts/imx6ul.dtsi | 2 + arch/arm/boot/dts/imx7d.dtsi | 6 + arch/arm/boot/dts/imx7s.dtsi | 2 + .../boot/dts/altera/socfpga_stratix10_socdk.dts | 2 +- .../dts/altera/socfpga_stratix10_socdk_nand.dts | 2 +- arch/arm64/boot/dts/freescale/imx8mn-var-som.dtsi | 2 +- arch/powerpc/include/asm/word-at-a-time.h | 2 +- arch/powerpc/mm/init_64.c | 3 +- arch/s390/kernel/sthyi.c | 6 +- arch/s390/kvm/intercept.c | 9 +- arch/s390/mm/gmap.c | 1 + arch/x86/include/asm/kprobes.h | 24 +- arch/x86/kernel/kprobes/core.c | 639 +++++++++++++-------- arch/x86/kernel/traps.c | 3 - arch/x86/kvm/vmx/vmx.c | 87 +-- drivers/acpi/processor_perflib.c | 42 +- drivers/ata/pata_ns87415.c | 2 +- drivers/base/power/power.h | 8 +- drivers/base/power/runtime.c | 6 +- drivers/base/power/wakeirq.c | 111 +++- drivers/block/loop.c | 3 +- drivers/char/tpm/tpm_tis_core.c | 10 +- drivers/cpufreq/intel_pstate.c | 14 - drivers/gpio/gpio-tps68470.c | 6 +- drivers/gpu/drm/msm/adreno/a5xx_gpu.c | 2 +- drivers/gpu/drm/msm/adreno/a6xx_gpu_state.h | 2 +- drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h | 13 - drivers/gpu/drm/ttm/ttm_bo.c | 16 +- drivers/gpu/drm/ttm/ttm_bo_util.c | 2 +- drivers/hwmon/nct7802.c | 2 +- drivers/i2c/busses/i2c-ibm_iic.c | 4 +- drivers/i2c/busses/i2c-nomadik.c | 42 +- drivers/i2c/busses/i2c-sh7760.c | 3 +- drivers/i2c/busses/i2c-tiny-usb.c | 4 +- drivers/infiniband/hw/mlx4/qp.c | 18 +- drivers/infiniband/hw/mthca/mthca_qp.c | 2 +- drivers/irqchip/irq-bcm6345-l1.c | 14 +- drivers/irqchip/irq-gic-v3-its.c | 75 ++- drivers/isdn/hardware/mISDN/hfcpci.c | 10 +- drivers/md/dm-cache-policy-smq.c | 28 +- drivers/md/dm-raid.c | 20 +- drivers/md/md.c | 2 + drivers/mtd/nand/raw/fsl_upm.c | 2 +- drivers/mtd/nand/raw/meson_nand.c | 3 +- drivers/mtd/nand/raw/omap_elm.c | 24 +- drivers/mtd/nand/spi/toshiba.c | 4 +- drivers/net/Makefile | 2 +- drivers/net/bonding/bond_main.c | 5 + drivers/net/can/usb/gs_usb.c | 2 + drivers/net/dsa/bcm_sf2.c | 8 +- drivers/net/ethernet/atheros/atl1e/atl1e_main.c | 7 +- drivers/net/ethernet/emulex/benet/be_main.c | 3 +- .../net/ethernet/hisilicon/hns3/hns3pf/hclge_dcb.c | 60 +- .../net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c | 3 +- drivers/net/ethernet/intel/i40e/i40e_debugfs.c | 2 +- drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c | 26 +- drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 2 +- .../mellanox/mlx5/core/en_accel/ipsec_rxtx.c | 4 +- drivers/net/ethernet/mellanox/mlx5/core/fs_core.c | 105 +++- .../ethernet/mellanox/mlx5/core/steering/dr_cmd.c | 5 +- drivers/net/ethernet/socionext/netsec.c | 11 + drivers/net/ethernet/xilinx/ll_temac_main.c | 16 +- drivers/net/phy/marvell10g.c | 7 + drivers/net/tap.c | 2 +- drivers/net/team/team.c | 9 + drivers/net/tun.c | 2 +- drivers/net/usb/cdc_ether.c | 21 + drivers/net/usb/usbnet.c | 6 + drivers/net/usb/zaurus.c | 21 + drivers/net/virtio_net.c | 4 +- drivers/net/vxlan/Makefile | 7 + drivers/net/{vxlan.c => vxlan/vxlan_core.c} | 23 +- drivers/net/wireless/mediatek/mt76/mac80211.c | 8 +- drivers/net/wireless/mediatek/mt76/mt76.h | 2 +- drivers/net/wireless/mediatek/mt76/mt7603/eeprom.c | 2 +- drivers/net/wireless/mediatek/mt76/mt7615/dma.c | 2 +- drivers/net/wireless/mediatek/mt76/mt7615/eeprom.c | 22 +- drivers/net/wireless/mediatek/mt76/mt76x0/eeprom.c | 6 +- drivers/net/wireless/mediatek/mt76/mt76x0/init.c | 4 +- drivers/net/wireless/mediatek/mt76/mt76x0/phy.c | 4 +- .../net/wireless/mediatek/mt76/mt76x02_eeprom.c | 8 +- drivers/net/wireless/mediatek/mt76/mt7915/eeprom.c | 8 +- drivers/net/wireless/mediatek/mt76/mt7915/init.c | 5 +- drivers/pci/pcie/aspm.c | 55 +- drivers/phy/hisilicon/phy-hisi-inno-usb2.c | 2 +- drivers/phy/qualcomm/phy-qcom-snps-femto-v2.c | 86 +-- drivers/platform/x86/msi-laptop.c | 8 +- drivers/pwm/pwm-meson.c | 25 +- drivers/s390/block/dasd_ioctl.c | 1 + drivers/s390/net/qeth_core.h | 1 - drivers/s390/net/qeth_core_main.c | 2 - drivers/s390/net/qeth_l2_main.c | 9 +- drivers/s390/net/qeth_l3_main.c | 8 +- drivers/s390/scsi/zfcp_fc.c | 6 +- drivers/soundwire/bus.c | 31 +- drivers/staging/ks7010/ks_wlan_net.c | 6 +- drivers/staging/media/atomisp/Kconfig | 1 + drivers/staging/rtl8712/ieee80211.c | 12 +- drivers/staging/rtl8712/rtl871x_ioctl_linux.c | 8 +- drivers/staging/rtl8712/rtl871x_mlme.c | 10 +- drivers/staging/rtl8712/rtl871x_xmit.c | 46 +- drivers/staging/rtl8712/wifi.h | 15 - drivers/staging/rtl8712/xmit_linux.c | 6 + drivers/tty/n_gsm.c | 4 +- drivers/tty/serial/8250/8250_dwlib.c | 6 +- drivers/tty/serial/qcom_geni_serial.c | 7 - drivers/tty/serial/sifive.c | 2 +- drivers/usb/core/quirks.c | 4 + drivers/usb/dwc3/core.c | 20 +- drivers/usb/dwc3/core.h | 3 - drivers/usb/dwc3/dwc3-pci.c | 6 +- drivers/usb/gadget/legacy/raw_gadget.c | 12 +- drivers/usb/gadget/udc/tegra-xudc.c | 8 +- drivers/usb/host/ohci-at91.c | 8 +- drivers/usb/host/xhci-mtk.c | 1 + drivers/usb/host/xhci-tegra.c | 8 +- drivers/usb/serial/option.c | 6 + drivers/usb/serial/usb-serial-simple.c | 73 +-- fs/btrfs/ctree.c | 2 + fs/btrfs/qgroup.c | 18 +- fs/btrfs/transaction.c | 10 +- fs/ceph/mds_client.c | 4 +- fs/ceph/mds_client.h | 5 + fs/ceph/metric.c | 2 +- fs/ceph/super.c | 10 + fs/dlm/plock.c | 100 ++-- fs/exfat/balloc.c | 6 +- fs/exfat/dir.c | 70 ++- fs/exfat/exfat_fs.h | 7 +- fs/exfat/namei.c | 9 +- fs/ext2/ext2.h | 12 - fs/ext2/super.c | 23 +- fs/ext4/ioctl.c | 5 +- fs/file.c | 24 +- fs/nfsd/nfs4state.c | 2 - fs/open.c | 2 +- fs/super.c | 11 +- fs/sysv/itree.c | 4 + include/asm-generic/word-at-a-time.h | 2 +- include/drm/ttm/ttm_bo_api.h | 28 + include/linux/pm_wakeirq.h | 9 +- include/linux/trace_events.h | 4 + include/net/ipv6.h | 8 +- include/net/vxlan.h | 17 +- include/trace/trace_events.h | 2 +- include/uapi/linux/blkzoned.h | 10 +- io_uring/io_uring.c | 33 +- kernel/events/core.c | 8 +- kernel/trace/bpf_trace.c | 6 +- kernel/trace/ring_buffer.c | 22 +- kernel/trace/trace.c | 76 ++- kernel/trace/trace.h | 2 + kernel/trace/trace_events.c | 14 +- kernel/trace/trace_output.c | 12 +- net/bluetooth/l2cap_sock.c | 2 + net/ceph/osd_client.c | 20 +- net/core/bpf_sk_storage.c | 5 +- net/core/rtnetlink.c | 8 +- net/core/sock.c | 21 +- net/core/sock_map.c | 2 - net/dcb/dcbnl.c | 2 +- net/ipv4/tcp_metrics.c | 70 ++- net/ipv6/addrconf.c | 14 +- net/ipv6/ip6mr.c | 2 +- net/netfilter/nf_tables_api.c | 20 +- net/netfilter/nft_immediate.c | 27 +- net/netfilter/nft_set_rbtree.c | 20 +- net/sched/cls_fw.c | 1 - net/sched/cls_route.c | 1 - net/sched/cls_u32.c | 57 +- net/sched/sch_mqprio.c | 144 +++-- net/tipc/crypto.c | 3 +- net/tipc/node.c | 2 +- net/unix/af_unix.c | 2 +- net/wireless/scan.c | 2 +- sound/pci/hda/patch_realtek.c | 1 + sound/soc/codecs/cs42l51-i2c.c | 6 + sound/soc/codecs/cs42l51.c | 7 - sound/soc/codecs/cs42l51.h | 1 - sound/soc/codecs/wm8904.c | 3 + sound/soc/fsl/fsl_spdif.c | 2 + .../tests/shell/test_uprobe_from_different_cu.sh | 8 +- tools/testing/selftests/net/mptcp/config | 1 + tools/testing/selftests/rseq/rseq.c | 31 +- 190 files changed, 2159 insertions(+), 1206 deletions(-)
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.10.190 release. There are 201 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Fri, 11 Aug 2023 10:36:10 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.10.190-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.10.y
and the diffstat can be found below.thanks,
greg k-h
On ARCH_BRCMSTB using 32-bit and 64-bit ARM kernels, build tested on BMIPS_GENERIC:
Signature · 1 line
Florian
Quoted 7 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.10.190 release. There are 201 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Fri, 11 Aug 2023 10:36:10 +0000. Anything received after that time might be too late.
Build results:
total: 159 pass: 159 fail: 0 Qemu test results: total: 487 pass: 487 fail: 0
Guenter
Quoted 10 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.10.190 release. There are 201 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Fri, 11 Aug 2023 10:36:10 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.10.190-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.10.y
and the diffstat can be found below.thanks,
greg k-h
Results from Linaro’s test farm.
No regressions on arm64, arm, x86_64, and i386.
## Build
* kernel: 5.10.190-rc1
* git: https://gitlab.com/Linaro/lkft/mirrors/stable/linux-stable-rc
* git branch: linux-5.10.y
* git commit: 0195dc1d1da1c3ea5afb2a07e66d1446ae278243
* git describe: v5.10.189-202-g0195dc1d1da1
* test details:
https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-5.10.y/build/v5.10.189-202-g0195dc1d1da1
## Test Regressions (compared to v5.10.189)
## Metric Regressions (compared to v5.10.189)
## Test Fixes (compared to v5.10.189)
## Metric Fixes (compared to v5.10.189)
## Test result summary
total: 116372, pass: 94296, fail: 2771, skip: 19188, xfail: 117
## Build Summary
* arc: 5 total, 5 passed, 0 failed
* arm: 117 total, 116 passed, 1 failed
* arm64: 45 total, 45 passed, 0 failed
* i386: 35 total, 35 passed, 0 failed
* mips: 27 total, 26 passed, 1 failed
* parisc: 4 total, 0 passed, 4 failed
* powerpc: 26 total, 25 passed, 1 failed
* riscv: 12 total, 11 passed, 1 failed
* s390: 12 total, 12 passed, 0 failed
* sh: 14 total, 12 passed, 2 failed
* sparc: 8 total, 8 passed, 0 failed
* x86_64: 38 total, 29 passed, 9 failed
## Test suites summary
* boot
* kselftest-android
* kselftest-arm64
* kselftest-breakpoints
* kselftest-capabilities
* kselftest-cgroup
* kselftest-clone3
* kselftest-core
* kselftest-cpu-hotplug
* kselftest-cpufreq
* kselftest-drivers-dma-buf
* kselftest-efivarfs
* kselftest-exec
* kselftest-filesystems
* kselftest-filesystems-binderfs
* kselftest-filesystems-epoll
* kselftest-firmware
* kselftest-fpu
* kselftest-ftrace
* kselftest-futex
* kselftest-gpio
* kselftest-intel_pstate
* kselftest-ipc
* kselftest-ir
* kselftest-kcmp
* kselftest-kexec
* kselftest-kvm
* kselftest-lib
* kselftest-membarrier
* kselftest-memfd
* kselftest-memory-hotplug
* kselftest-mincore
* kselftest-mount
* kselftest-mqueue
* kselftest-net
* kselftest-net-forwarding
* kselftest-net-mptcp
* kselftest-netfilter
* kselftest-nsfs
* kselftest-openat2
* kselftest-pid_namespace
* kselftest-pidfd
* kselftest-proc
* kselftest-pstore
* kselftest-ptrace
* kselftest-rseq
* kselftest-rtc
* kselftest-sigaltstack
* kselftest-size
* kselftest-tc-testing
* kselftest-timens
* kselftest-tmpfs
* kselftest-tpm2
* kselftest-user_events
* kselftest-vDSO
* kselftest-watchdog
* kselftest-x86
* kunit
* kvm-unit-tests
* libgpiod
* log-parser-boot
* log-parser-test
* ltp-cap_bounds
* ltp-commands
* ltp-containers
* ltp-controllers
* ltp-cpuhotplug
* ltp-crypto
* ltp-cve
* ltp-dio
* ltp-fcntl-locktests
* ltp-filecaps
* ltp-fs
* ltp-fs_bind
* ltp-fs_perms_simple
* ltp-fsx
* ltp-hugetlb
* ltp-io
* ltp-ipc
* ltp-math
* ltp-mm
* ltp-nptl
* ltp-pty
* ltp-sched
* ltp-securebits
* ltp-smoke
* ltp-syscalls
* ltp-tracing
* network-basic-tests
* perf
* rcutorture
* v4l2-compliance
--
Linaro LKFT
https://lkft.linaro.org
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.10.190 release. There are 201 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Fri, 11 Aug 2023 10:36:10 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.10.190-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.10.y
and the diffstat can be found below.thanks,
greg k-h
All tests passing for Tegra ...
Test results for stable-v5.10:
11 builds: 11 pass, 0 fail
28 boots: 28 pass, 0 fail
75 tests: 75 pass, 0 failLinux version: 5.10.190-rc1-g0195dc1d1da1
Boards tested: tegra124-jetson-tk1, tegra186-p2771-0000,
tegra194-p2972-0000, tegra194-p3509-0000+p3668-0000,
tegra20-ventana, tegra210-p2371-2180,
tegra210-p3450-0000, tegra30-cardhu-a04