From 6689e1c326b96e12a9ffb60f7162a5477a09d065 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Fri, 10 Apr 2020 15:00:11 +0200 Subject: [PATCH] 4.14-stable patches added patches: bluetooth-rfcomm-fix-odebug-bug-in-rfcomm_dev_ioctl.patch fbcon-fix-null-ptr-deref-in-fbcon_switch.patch rdma-cm-update-num_paths-in-cma_resolve_iboe_route-error-flow.patch --- ...m-fix-odebug-bug-in-rfcomm_dev_ioctl.patch | 36 +++++++ ...n-fix-null-ptr-deref-in-fbcon_switch.patch | 58 +++++++++++ ...in-cma_resolve_iboe_route-error-flow.patch | 96 +++++++++++++++++++ queue-4.14/series | 3 + 4 files changed, 193 insertions(+) create mode 100644 queue-4.14/bluetooth-rfcomm-fix-odebug-bug-in-rfcomm_dev_ioctl.patch create mode 100644 queue-4.14/fbcon-fix-null-ptr-deref-in-fbcon_switch.patch create mode 100644 queue-4.14/rdma-cm-update-num_paths-in-cma_resolve_iboe_route-error-flow.patch diff --git a/queue-4.14/bluetooth-rfcomm-fix-odebug-bug-in-rfcomm_dev_ioctl.patch b/queue-4.14/bluetooth-rfcomm-fix-odebug-bug-in-rfcomm_dev_ioctl.patch new file mode 100644 index 00000000000..401a9c9f43a --- /dev/null +++ b/queue-4.14/bluetooth-rfcomm-fix-odebug-bug-in-rfcomm_dev_ioctl.patch @@ -0,0 +1,36 @@ +From 71811cac8532b2387b3414f7cd8fe9e497482864 Mon Sep 17 00:00:00 2001 +From: Qiujun Huang +Date: Sun, 8 Mar 2020 17:45:27 +0800 +Subject: Bluetooth: RFCOMM: fix ODEBUG bug in rfcomm_dev_ioctl + +From: Qiujun Huang + +commit 71811cac8532b2387b3414f7cd8fe9e497482864 upstream. + +Needn't call 'rfcomm_dlc_put' here, because 'rfcomm_dlc_exists' didn't +increase dlc->refcnt. + +Reported-by: syzbot+4496e82090657320efc6@syzkaller.appspotmail.com +Signed-off-by: Qiujun Huang +Suggested-by: Hillf Danton +Signed-off-by: Marcel Holtmann +Signed-off-by: Greg Kroah-Hartman + +--- + net/bluetooth/rfcomm/tty.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +--- a/net/bluetooth/rfcomm/tty.c ++++ b/net/bluetooth/rfcomm/tty.c +@@ -413,10 +413,8 @@ static int __rfcomm_create_dev(struct so + dlc = rfcomm_dlc_exists(&req.src, &req.dst, req.channel); + if (IS_ERR(dlc)) + return PTR_ERR(dlc); +- else if (dlc) { +- rfcomm_dlc_put(dlc); ++ if (dlc) + return -EBUSY; +- } + dlc = rfcomm_dlc_alloc(GFP_KERNEL); + if (!dlc) + return -ENOMEM; diff --git a/queue-4.14/fbcon-fix-null-ptr-deref-in-fbcon_switch.patch b/queue-4.14/fbcon-fix-null-ptr-deref-in-fbcon_switch.patch new file mode 100644 index 00000000000..fc87070848f --- /dev/null +++ b/queue-4.14/fbcon-fix-null-ptr-deref-in-fbcon_switch.patch @@ -0,0 +1,58 @@ +From b139f8b00db4a8ea75a4174346eafa48041aa489 Mon Sep 17 00:00:00 2001 +From: Qiujun Huang +Date: Sun, 29 Mar 2020 16:56:47 +0800 +Subject: fbcon: fix null-ptr-deref in fbcon_switch + +From: Qiujun Huang + +commit b139f8b00db4a8ea75a4174346eafa48041aa489 upstream. + +Set logo_shown to FBCON_LOGO_CANSHOW when the vc was deallocated. + +syzkaller report: https://lkml.org/lkml/2020/3/27/403 +general protection fault, probably for non-canonical address +0xdffffc000000006c: 0000 [#1] SMP KASAN +KASAN: null-ptr-deref in range [0x0000000000000360-0x0000000000000367] +RIP: 0010:fbcon_switch+0x28f/0x1740 +drivers/video/fbdev/core/fbcon.c:2260 + +Call Trace: +redraw_screen+0x2a8/0x770 drivers/tty/vt/vt.c:1008 +vc_do_resize+0xfe7/0x1360 drivers/tty/vt/vt.c:1295 +fbcon_init+0x1221/0x1ab0 drivers/video/fbdev/core/fbcon.c:1219 +visual_init+0x305/0x5c0 drivers/tty/vt/vt.c:1062 +do_bind_con_driver+0x536/0x890 drivers/tty/vt/vt.c:3542 +do_take_over_console+0x453/0x5b0 drivers/tty/vt/vt.c:4122 +do_fbcon_takeover+0x10b/0x210 drivers/video/fbdev/core/fbcon.c:588 +fbcon_fb_registered+0x26b/0x340 drivers/video/fbdev/core/fbcon.c:3259 +do_register_framebuffer drivers/video/fbdev/core/fbmem.c:1664 [inline] +register_framebuffer+0x56e/0x980 drivers/video/fbdev/core/fbmem.c:1832 +dlfb_usb_probe.cold+0x1743/0x1ba3 drivers/video/fbdev/udlfb.c:1735 +usb_probe_interface+0x310/0x800 drivers/usb/core/driver.c:374 + +accessing vc_cons[logo_shown].d->vc_top causes the bug. + +Reported-by: syzbot+732528bae351682f1f27@syzkaller.appspotmail.com +Signed-off-by: Qiujun Huang +Acked-by: Sam Ravnborg +Cc: stable@vger.kernel.org +Signed-off-by: Daniel Vetter +Link: https://patchwork.freedesktop.org/patch/msgid/20200329085647.25133-1-hqjagain@gmail.com +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/video/fbdev/core/fbcon.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/drivers/video/fbdev/core/fbcon.c ++++ b/drivers/video/fbdev/core/fbcon.c +@@ -1221,6 +1221,9 @@ finished: + if (!con_is_bound(&fb_con)) + fbcon_exit(); + ++ if (vc->vc_num == logo_shown) ++ logo_shown = FBCON_LOGO_CANSHOW; ++ + return; + } + diff --git a/queue-4.14/rdma-cm-update-num_paths-in-cma_resolve_iboe_route-error-flow.patch b/queue-4.14/rdma-cm-update-num_paths-in-cma_resolve_iboe_route-error-flow.patch new file mode 100644 index 00000000000..312e54ea770 --- /dev/null +++ b/queue-4.14/rdma-cm-update-num_paths-in-cma_resolve_iboe_route-error-flow.patch @@ -0,0 +1,96 @@ +From 987914ab841e2ec281a35b54348ab109b4c0bb4e Mon Sep 17 00:00:00 2001 +From: Avihai Horon +Date: Wed, 18 Mar 2020 12:17:41 +0200 +Subject: RDMA/cm: Update num_paths in cma_resolve_iboe_route error flow + +From: Avihai Horon + +commit 987914ab841e2ec281a35b54348ab109b4c0bb4e upstream. + +After a successful allocation of path_rec, num_paths is set to 1, but any +error after such allocation will leave num_paths uncleared. + +This causes to de-referencing a NULL pointer later on. Hence, num_paths +needs to be set back to 0 if such an error occurs. + +The following crash from syzkaller revealed it. + + kasan: CONFIG_KASAN_INLINE enabled + kasan: GPF could be caused by NULL-ptr deref or user memory access + general protection fault: 0000 [#1] SMP DEBUG_PAGEALLOC KASAN PTI + CPU: 0 PID: 357 Comm: syz-executor060 Not tainted 4.18.0+ #311 + Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS + rel-1.11.0-0-g63451fca13-prebuilt.qemu-project.org 04/01/2014 + RIP: 0010:ib_copy_path_rec_to_user+0x94/0x3e0 + Code: f1 f1 f1 f1 c7 40 0c 00 00 f4 f4 65 48 8b 04 25 28 00 00 00 48 89 + 45 c8 31 c0 e8 d7 60 24 ff 48 8d 7b 4c 48 89 f8 48 c1 e8 03 <42> 0f b6 + 14 30 48 89 f8 83 e0 07 83 c0 03 38 d0 7c 08 84 d2 0f 85 + RSP: 0018:ffff88006586f980 EFLAGS: 00010207 + RAX: 0000000000000009 RBX: 0000000000000000 RCX: 1ffff1000d5fe475 + RDX: ffff8800621e17c0 RSI: ffffffff820d45f9 RDI: 000000000000004c + RBP: ffff88006586fa50 R08: ffffed000cb0df73 R09: ffffed000cb0df72 + R10: ffff88006586fa70 R11: ffffed000cb0df73 R12: 1ffff1000cb0df30 + R13: ffff88006586fae8 R14: dffffc0000000000 R15: ffff88006aff2200 + FS: 00000000016fc880(0000) GS:ffff88006d000000(0000) + knlGS:0000000000000000 + CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 + CR2: 0000000020000040 CR3: 0000000063fec000 CR4: 00000000000006b0 + DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 + DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 + Call Trace: + ? ib_copy_path_rec_from_user+0xcc0/0xcc0 + ? __mutex_unlock_slowpath+0xfc/0x670 + ? wait_for_completion+0x3b0/0x3b0 + ? ucma_query_route+0x818/0xc60 + ucma_query_route+0x818/0xc60 + ? ucma_listen+0x1b0/0x1b0 + ? sched_clock_cpu+0x18/0x1d0 + ? sched_clock_cpu+0x18/0x1d0 + ? ucma_listen+0x1b0/0x1b0 + ? ucma_write+0x292/0x460 + ucma_write+0x292/0x460 + ? ucma_close_id+0x60/0x60 + ? sched_clock_cpu+0x18/0x1d0 + ? sched_clock_cpu+0x18/0x1d0 + __vfs_write+0xf7/0x620 + ? ucma_close_id+0x60/0x60 + ? kernel_read+0x110/0x110 + ? time_hardirqs_on+0x19/0x580 + ? lock_acquire+0x18b/0x3a0 + ? finish_task_switch+0xf3/0x5d0 + ? _raw_spin_unlock_irq+0x29/0x40 + ? _raw_spin_unlock_irq+0x29/0x40 + ? finish_task_switch+0x1be/0x5d0 + ? __switch_to_asm+0x34/0x70 + ? __switch_to_asm+0x40/0x70 + ? security_file_permission+0x172/0x1e0 + vfs_write+0x192/0x460 + ksys_write+0xc6/0x1a0 + ? __ia32_sys_read+0xb0/0xb0 + ? entry_SYSCALL_64_after_hwframe+0x3e/0xbe + ? do_syscall_64+0x1d/0x470 + do_syscall_64+0x9e/0x470 + entry_SYSCALL_64_after_hwframe+0x49/0xbe + +Fixes: 3c86aa70bf67 ("RDMA/cm: Add RDMA CM support for IBoE devices") +Link: https://lore.kernel.org/r/20200318101741.47211-1-leon@kernel.org +Signed-off-by: Avihai Horon +Reviewed-by: Maor Gottlieb +Signed-off-by: Leon Romanovsky +Signed-off-by: Jason Gunthorpe +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/infiniband/core/cma.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/infiniband/core/cma.c ++++ b/drivers/infiniband/core/cma.c +@@ -2661,6 +2661,7 @@ static int cma_resolve_iboe_route(struct + err2: + kfree(route->path_rec); + route->path_rec = NULL; ++ route->num_paths = 0; + err1: + kfree(work); + return ret; diff --git a/queue-4.14/series b/queue-4.14/series index 37b01d404da..a187b08418e 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -26,3 +26,6 @@ ib-hfi1-call-kobject_put-when-kobject_init_and_add-fails.patch ib-hfi1-fix-memory-leaks-in-sysfs-registration-and-unregistration.patch ceph-remove-the-extra-slashes-in-the-server-path.patch ceph-canonicalize-server-path-in-place.patch +bluetooth-rfcomm-fix-odebug-bug-in-rfcomm_dev_ioctl.patch +rdma-cm-update-num_paths-in-cma_resolve_iboe_route-error-flow.patch +fbcon-fix-null-ptr-deref-in-fbcon_switch.patch -- 2.47.3