- Posts: 26
- Joined: Wed Jan 04, 2017 12:18 pm
Tried with kernel 4.8.13, failure again.
Configuration of
kernel-lt-4.4.39-1.el7.elrepo.x86_64
blackmagic driver 10.8.4
blackmagic sdk 10.8.3
seems to work.
[root@dev-5 blackmagic-10.8.4a4]# uname -a
Linux dev-5 4.9.3-200.fc25.x86_64 #1 SMP Fri Jan 13 01:01:13 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
[ 957.489661] blackmagic: Loading driver (version: 10.8.4a4)
[ 957.599902] blackmagic: Successfully loaded device "blackmagic!dv0" [pci@0000:02:00.0]
[ 958.494178] usercopy: kernel memory overwrite attempt detected to ffffab7cc0d4bd38 (<process stack>) (16 bytes)
[ 958.494508] ------------[ cut here ]------------
[ 958.494682] kernel BUG at mm/usercopy.c:75!
[ 958.494855] invalid opcode: 0000 [#2] SMP
[ 958.495027] Modules linked in: blackmagic(POE) nf_conntrack_ipv4 nf_defrag_ipv4 binfmt_misc xt_conntrack nf_conntrack snd_hda_codec_hdmi snd_hda_intel snd_hda_codec snd_hda_core snd_hwdep snd_pcm snd_timer snd soundcore coretemp iTCO_wdt iTCO_vendor_support gpio_ich kvm e1000e mei_wdt hp_wmi ppdev sparse_keymap rfkill irqbypass ptp fjes lpc_ich parport_pc shpchp pps_core mei_me acpi_cpufreq parport mei tpm_tis tpm_tis_core tpm xfs libcrc32c uas serio_raw usb_storage wmi ata_generic pata_acpi [last unloaded: blackmagic]
[ 958.495039] CPU: 3 PID: 3741 Comm: BlackmagicPrefe Tainted: P D IOE 4.9.3-200.fc25.x86_64 #1
[ 958.495039] Hardware name: Hewlett-Packard HP Compaq dc7900 Convertible Minitower/3032h, BIOS 786G1 v01.16 03/05/2009
[ 958.495039] task: ffff98df8e79d880 task.stack: ffffab7cc0d48000
[ 958.495039] RIP: 0010:[<ffffffffa6254c27>] [<ffffffffa6254c27>] __check_object_size+0x77/0x1d6
[ 958.495039] RSP: 0018:ffffab7cc0d4bca0 EFLAGS: 00010286
[ 958.495039] RAX: 0000000000000063 RBX: ffffab7cc0d4bd38 RCX: 0000000000000000
[ 958.495039] RDX: 0000000000000000 RSI: ffff98df97d8e0a8 RDI: ffff98df97d8e0a8
[ 958.495039] RBP: ffffab7cc0d4bcc0 R08: 0000000000000000 R09: 0000000000000000
[ 958.495039] R10: 0000000000000543 R11: 000000000000036c R12: 0000000000000010
[ 958.495039] R13: 0000000000000000 R14: ffffab7cc0d4bd48 R15: 00007ffedb8fb450
[ 958.495039] FS: 00007f4ebb0be740(0000) GS:ffff98df97d80000(0000) knlGS:0000000000000000
[ 958.495039] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 958.495039] CR2: 00007f4eb9c03a50 CR3: 00000001fd449000 CR4: 00000000000406e0
[ 958.495039] Stack:
[ 958.495039] ffffab7cc0d4bd38 0000000000000010 00007ffedb8fb450 ffff98df8521f700
[ 958.495039] ffffab7cc0d4bce8 ffffffffc051f19b ffffab7cc0d4bd38 0000000000010000
[ 958.495039] 0000000000000000 00007ffedb8fb450 ffffffffc050179a ffffab7cc0d4bd18
[ 958.495039] Call Trace:
[ 958.495039] [<ffffffffc051f19b>] __dl_copy_from_user+0x1b/0x40 [blackmagic]
[ 958.495039] [<ffffffffc050179a>] _ZN18IoctlMessageKernel6unpackEv+0x4a/0x160 [blackmagic]
[ 958.495039] [<ffffffffc04cc62b>] ? blackmagic_ioctl_private+0x35db/0x4080 [blackmagic]
[ 958.495039] [<ffffffffa6269cb1>] ? filename_lookup+0xf1/0x180
[ 958.495039] [<ffffffffa61c0dbc>] ? unlock_page+0x4c/0x60
[ 958.495039] [<ffffffffa61fd839>] ? handle_mm_fault+0xe49/0x1610
[ 958.495039] [<ffffffffc051e019>] ? blackmagic_ioctl+0x49/0x60 [blackmagic]
[ 958.495039] [<ffffffffa626db43>] ? do_vfs_ioctl+0xa3/0x5f0
[ 958.495039] [<ffffffffa6062836>] ? __do_page_fault+0x266/0x4e0
[ 958.495039] [<ffffffffa626e109>] ? SyS_ioctl+0x79/0x90
[ 958.495039] [<ffffffffa681bbf7>] ? entry_SYSCALL_64_fastpath+0x1a/0xa9
[ 958.495039] Code: 48 0f 44 d1 48 c7 c6 16 9f c5 a6 48 c7 c1 83 df c4 a6 48 0f 44 f1 4d 89 e1 49 89 c0 48 89 d9 48 c7 c7 90 63 c5 a6 e8 b8 b1 f6 ff <0f> 0b e8 c2 a0 fb ff 85 c0 75 72 48 89 df e8 06 3c e1 ff 84 c0
[ 958.495039] RIP [<ffffffffa6254c27>] __check_object_size+0x77/0x1d6
[ 958.495039] RSP <ffffab7cc0d4bca0>
[ 958.508452] ---[ end trace f68728a0d3053b55 ]---
--- blackmagic_lib.c.origin 2016-11-16 06:16:31.000000000 +0200
+++ blackmagic_lib.c 2017-01-19 14:54:20.627187893 +0200
@@ -662,7 +662,12 @@
write = 0;
down_read(¤t_task->mm->mmap_sem);
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0)
+ if (current_task == current)
+ ret = get_user_pages((unsigned long)ptr & PAGE_MASK, *nr_pages, write ? FOLL_WRITE : 0, pages, NULL);
+ else
+ ret = get_user_pages_remote(current_task, current_task->mm, (unsigned long)ptr & PAGE_MASK, *nr_pages, write ? FOLL_WRITE : 0, pages, NULL);
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)
if (current_task == current)
ret = get_user_pages((unsigned long)ptr & PAGE_MASK, *nr_pages, write, 0, pages, NULL);
else
--- blackmagic-io-10.8.5a4/bm_mm.c.origin 2017-02-21 01:42:18.000000000 +0200
+++ blackmagic-io-10.8.5a4/bm_mm.c 2017-03-02 11:16:22.922824197 +0200
@@ -103,7 +103,12 @@
return false;
down_read(&task->mm->mmap_sem);
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0)
+ if (current_task == current)
+ ret = get_user_pages((unsigned long)address & PAGE_MASK, umem->length, write ? FOLL_WRITE : 0, umem->pages, NULL);
+ else
+ ret = get_user_pages_remote(task, task->mm, (unsigned long)address & PAGE_MASK, umem->length, write ? FOLL_WRITE : 0, umem->pages, NULL);
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)
if (task == current)
ret = get_user_pages((unsigned long)address & PAGE_MASK, umem->length, write, 0, umem->pages, NULL);
else
--- blackmagic-10.8.5a4/blackmagic_lib.c.origin 2017-02-21 01:42:18.000000000 +0200
+++ blackmagic-10.8.5a4/blackmagic_lib.c 2017-03-02 11:11:32.982009963 +0200
@@ -662,7 +662,12 @@
write = 0;
down_read(¤t_task->mm->mmap_sem);
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0)
+ if (current_task == current)
+ ret = get_user_pages((unsigned long)ptr & PAGE_MASK, *nr_pages, write ? FOLL_WRITE : 0, pages, NULL);
+ else
+ ret = get_user_pages_remote(current_task, current_task->mm, (unsigned long)ptr & PAGE_MASK, *nr_pages, write ? FOLL_WRITE : 0, pages, NULL);
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)
if (current_task == current)
ret = get_user_pages((unsigned long)ptr & PAGE_MASK, *nr_pages, write, 0, pages, NULL);
else
--- blackmagic-10.8.5a4/blackmagic_lib.c.origin 2017-02-21 01:42:18.000000000 +0200
+++ blackmagic-10.8.5a4/blackmagic_lib.c 2017-03-28 10:54:51.205782144 +0300
@@ -662,7 +662,16 @@
write = 0;
down_read(¤t_task->mm->mmap_sem);
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0)
+ if (current_task == current)
+ ret = get_user_pages((unsigned long)ptr & PAGE_MASK, *nr_pages, write ? FOLL_WRITE : 0, pages, NULL);
+ else
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)
+ ret = get_user_pages_remote(current_task, current_task->mm, (unsigned long)ptr & PAGE_MASK, *nr_pages, write ? FOLL_WRITE : 0, pages, NULL, NULL);
+#else
+ ret = get_user_pages_remote(current_task, current_task->mm, (unsigned long)ptr & PAGE_MASK, *nr_pages, write ? FOLL_WRITE : 0, pages, NULL);
+#endif
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)
if (current_task == current)
ret = get_user_pages((unsigned long)ptr & PAGE_MASK, *nr_pages, write, 0, pages, NULL);
else
--- blackmagic-io-10.8.5a4/bm_mm.c.origin 2017-02-21 01:42:18.000000000 +0200
+++ blackmagic-io-10.8.5a4/bm_mm.c 2017-03-28 10:56:10.775912864 +0300
@@ -103,7 +103,16 @@
return false;
down_read(&task->mm->mmap_sem);
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0)
+ if (current_task == current)
+ ret = get_user_pages((unsigned long)address & PAGE_MASK, umem->length, write ? FOLL_WRITE : 0, umem->pages, NULL);
+ else
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)
+ ret = get_user_pages_remote(task, task->mm, (unsigned long)address & PAGE_MASK, umem->length, write ? FOLL_WRITE : 0, umem->pages, NULL, NULL);
+#else
+ ret = get_user_pages_remote(task, task->mm, (unsigned long)address & PAGE_MASK, umem->length, write ? FOLL_WRITE : 0, umem->pages, NULL);
+#endif
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)
if (task == current)
ret = get_user_pages((unsigned long)address & PAGE_MASK, umem->length, write, 0, umem->pages, NULL);
else
Users browsing this forum: No registered users and 35 guests