From: Greg Kroah-Hartman Date: Tue, 14 Dec 2021 15:17:15 +0000 (+0100) Subject: 4.14-stable patches X-Git-Tag: v5.4.167~29 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=28f1e7dc4815ed2d2d2d076b89fe0883400a8bda;p=thirdparty%2Fkernel%2Fstable-queue.git 4.14-stable patches added patches: nfc-fix-segfault-in-nfc_genl_dump_devices_done.patch --- diff --git a/queue-4.14/nfc-fix-segfault-in-nfc_genl_dump_devices_done.patch b/queue-4.14/nfc-fix-segfault-in-nfc_genl_dump_devices_done.patch new file mode 100644 index 00000000000..f8e3ba9b938 --- /dev/null +++ b/queue-4.14/nfc-fix-segfault-in-nfc_genl_dump_devices_done.patch @@ -0,0 +1,57 @@ +From fd79a0cbf0b2e34bcc45b13acf962e2032a82203 Mon Sep 17 00:00:00 2001 +From: Tadeusz Struk +Date: Wed, 8 Dec 2021 10:27:42 -0800 +Subject: nfc: fix segfault in nfc_genl_dump_devices_done + +From: Tadeusz Struk + +commit fd79a0cbf0b2e34bcc45b13acf962e2032a82203 upstream. + +When kmalloc in nfc_genl_dump_devices() fails then +nfc_genl_dump_devices_done() segfaults as below + +KASAN: null-ptr-deref in range [0x0000000000000008-0x000000000000000f] +CPU: 0 PID: 25 Comm: kworker/0:1 Not tainted 5.16.0-rc4-01180-g2a987e65025e-dirty #5 +Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.14.0-6.fc35 04/01/2014 +Workqueue: events netlink_sock_destruct_work +RIP: 0010:klist_iter_exit+0x26/0x80 +Call Trace: + +class_dev_iter_exit+0x15/0x20 +nfc_genl_dump_devices_done+0x3b/0x50 +genl_lock_done+0x84/0xd0 +netlink_sock_destruct+0x8f/0x270 +__sk_destruct+0x64/0x3b0 +sk_destruct+0xa8/0xd0 +__sk_free+0x2e8/0x3d0 +sk_free+0x51/0x90 +netlink_sock_destruct_work+0x1c/0x20 +process_one_work+0x411/0x710 +worker_thread+0x6fd/0xa80 + +Link: https://syzkaller.appspot.com/bug?id=fc0fa5a53db9edd261d56e74325419faf18bd0df +Reported-by: syzbot+f9f76f4a0766420b4a02@syzkaller.appspotmail.com +Signed-off-by: Tadeusz Struk +Reviewed-by: Krzysztof Kozlowski +Link: https://lore.kernel.org/r/20211208182742.340542-1-tadeusz.struk@linaro.org +Signed-off-by: Jakub Kicinski +Signed-off-by: Greg Kroah-Hartman +--- + net/nfc/netlink.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +--- a/net/nfc/netlink.c ++++ b/net/nfc/netlink.c +@@ -666,8 +666,10 @@ static int nfc_genl_dump_devices_done(st + { + struct class_dev_iter *iter = (struct class_dev_iter *) cb->args[0]; + +- nfc_device_iter_exit(iter); +- kfree(iter); ++ if (iter) { ++ nfc_device_iter_exit(iter); ++ kfree(iter); ++ } + + return 0; + } diff --git a/queue-4.14/series b/queue-4.14/series new file mode 100644 index 00000000000..c790a73e37a --- /dev/null +++ b/queue-4.14/series @@ -0,0 +1 @@ +nfc-fix-segfault-in-nfc_genl_dump_devices_done.patch