** Description changed:

+ == SRU Justification ==
+ When trying to insert a vimc module on a system has other devices being 
registered in the component framework, if the device is not necessarily a 
platform_device, nor have a platform_data it will trigger a NULL pointer 
deference issue.
+ 
  Issue found on a bare metal node with Bionic kernel (with config vimc
- enabled, see bug 1831482)
+ enabled)
  
  ubuntu@amaura:~$ sudo modprobe vimc
  Killed
  
  dmesg output:
- [  127.004498] new mount options do not match the existing superblock, will 
be ignored
  [ 2855.340272] media: Linux media interface: v0.10
  [ 2855.344927] Linux video capture interface: v2.00
  [ 2855.346146] BUG: unable to handle kernel NULL pointer dereference at 
0000000000000000
  [ 2855.346172] IP: strcmp+0xe/0x30
  [ 2855.346181] PGD 0 P4D 0
  [ 2855.346189] Oops: 0000 [#1] SMP PTI
  [ 2855.346198] Modules linked in: vimc(+) videodev media ppdev intel_rapl 
x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel binfmt_misc kvm 
irqbypass intel_cstate intel_rapl_perf ipmi_si joydev ipmi_devintf 
ipmi_msghandler intel_pch_thermal input_leds parport_pc lpc_ich shpchp parport 
mac_hid sch_fq_codel ib_iser rdma_cm iw_cm ib_cm ib_core iscsi_tcp libiscsi_tcp 
libiscsi scsi_transport_iscsi ip_tables x_tables autofs4 btrfs zstd_compress 
raid10 raid456 async_raid6_recov async_memcpy async_pq async_xor async_tx xor 
raid6_pq libcrc32c raid1 raid0 multipath linear hid_generic usbhid hid 
crct10dif_pclmul crc32_pclmul ghash_clmulni_intel pcbc i915 mgag200 ttm 
drm_kms_helper aesni_intel syscopyarea aes_x86_64 sysfillrect crypto_simd igb 
sysimgblt glue_helper fb_sys_fops cryptd dca drm i2c_algo_bit
  [ 2855.346366]  ahci ptp libahci pps_core video
  [ 2855.346379] CPU: 4 PID: 1505 Comm: modprobe Not tainted 4.15.0-58-generic 
#64
  [ 2855.346395] Hardware name: Intel Corporation S1200RP/S1200RP, BIOS 
S1200RP.86B.03.02.0003.070120151022 07/01/2015
  [ 2855.346418] RIP: 0010:strcmp+0xe/0x30
  [ 2855.346428] RSP: 0018:ffffb63501f93a00 EFLAGS: 00010202
  [ 2855.346440] RAX: ffffffffc0c860f0 RBX: 0000000000000000 RCX: 
0000000000000000
  [ 2855.346456] RDX: ffffa097d85ec440 RSI: ffffffffc0c8723f RDI: 
0000000000000001
  [ 2855.346473] RBP: ffffb63501f93a00 R08: ffffa097e09270a0 R09: 
ffffa097d265ca80
  [ 2855.346489] R10: ffffe84b51559600 R11: 0000000000000200 R12: 
ffffa097dcdbf718
  [ 2855.346505] R13: ffffa097d265ca80 R14: ffffa097d2f2b380 R15: 
0000000000000000
  [ 2855.346521] FS:  00007fd7f4e4b540(0000) GS:ffffa097e0900000(0000) 
knlGS:0000000000000000
  [ 2855.346539] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
  [ 2855.346553] CR2: 0000000000000000 CR3: 00000004580fc001 CR4: 
00000000003606e0
  [ 2855.346569] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 
0000000000000000
  [ 2855.346585] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 
0000000000000400
  [ 2855.346601] Call Trace:
  [ 2855.346611]  vimc_comp_compare+0x15/0x20 [vimc]
  [ 2855.346624]  try_to_bring_up_master+0xa3/0x260
  [ 2855.346635]  ? vimc_remove+0x90/0x90 [vimc]
  [ 2855.346646]  component_master_add_with_match+0x8b/0xd0
  [ 2855.346659]  vimc_probe+0x325/0x3c9 [vimc]
  [ 2855.346672]  ? acpi_dev_pm_attach+0x25/0xd0
  [ 2855.346683]  platform_drv_probe+0x3e/0xa0
  [ 2855.346693]  driver_probe_device+0x30c/0x490
  [ 2855.346704]  __driver_attach+0xa7/0xf0
  [ 2855.346714]  ? driver_probe_device+0x490/0x490
  [ 2855.346725]  bus_for_each_dev+0x70/0xc0
  [ 2855.346735]  driver_attach+0x1e/0x20
  [ 2855.346744]  bus_add_driver+0x1c7/0x270
  [ 2855.346754]  ? 0xffffffffc0c8b000
  [ 2855.346763]  driver_register+0x60/0xe0
  [ 2855.346772]  ? 0xffffffffc0c8b000
  [ 2855.346781]  __platform_driver_register+0x36/0x40
  [ 2855.346793]  vimc_init+0x46/0x1000 [vimc]
  [ 2855.347306]  do_one_initcall+0x52/0x19f
  [ 2855.347810]  ? __vunmap+0x8e/0xc0
  [ 2855.348322]  ? _cond_resched+0x19/0x40
  [ 2855.348811]  ? kmem_cache_alloc_trace+0x14e/0x1b0
  [ 2855.349290]  ? do_init_module+0x27/0x209
  [ 2855.349768]  do_init_module+0x5f/0x209
  [ 2855.350246]  load_module+0x193b/0x1f30
  [ 2855.350710]  ? ima_post_read_file+0x96/0xa0
  [ 2855.351159]  SYSC_finit_module+0xfc/0x120
  [ 2855.351592]  ? SYSC_finit_module+0xfc/0x120
  [ 2855.352010]  SyS_finit_module+0xe/0x10
  [ 2855.352412]  do_syscall_64+0x73/0x130
  [ 2855.352797]  entry_SYSCALL_64_after_hwframe+0x3d/0xa2
  [ 2855.353169] RIP: 0033:0x7fd7f4959839
  [ 2855.353538] RSP: 002b:00007ffd7e3fd5c8 EFLAGS: 00000246 ORIG_RAX: 
0000000000000139
  [ 2855.353915] RAX: ffffffffffffffda RBX: 0000563c3b02eea0 RCX: 
00007fd7f4959839
  [ 2855.354286] RDX: 0000000000000000 RSI: 0000563c39de5d2e RDI: 
0000000000000005
  [ 2855.354647] RBP: 0000563c39de5d2e R08: 0000000000000000 R09: 
0000563c3b02eea0
  [ 2855.355009] R10: 0000000000000005 R11: 0000000000000246 R12: 
0000000000000000
  [ 2855.355369] R13: 0000563c3b02ef20 R14: 0000000000040000 R15: 
0000563c3b02eea0
  [ 2855.355728] Code: 01 c8 c3 c6 44 07 ff 00 eb 91 31 c0 eb c9 48 c7 c0 f9 ff 
ff ff c3 0f 1f 80 00 00 00 00 55 48 89 e5 eb 04 84 c0 74 18 48 83 c7 01 <0f> b6 
47 ff 48 83 c6 01 3a 46 ff 74 eb 19 c0 83 c8 01 5d c3 31
  [ 2855.356503] RIP: strcmp+0xe/0x30 RSP: ffffb63501f93a00
  [ 2855.356885] CR2: 0000000000000000
  [ 2855.357259] ---[ end trace bfba48c80f803d2d ]---
+ 
+ == Fix ==
+ * ee1c71a8 (media: vimc: fix component match compare)
+ 
+ This patch can be cherry-picked in to B/D/E.
+ VIMC support was only enabled on these (lp:1831482).
+ 
+ == Test ==
+ Test kernels could be found here:
+ https://people.canonical.com/~phlin/kernel/lp-1840028-null-ptr-vimc/
+ 
+ Tested with node "amaura", patch works as expected, the vimc module can
+ be inserted / removed without any issue.
+ 
+ == Regression Potential ==
+ Low, this patch is specific for vimc and we have positive test result here.

** Changed in: linux (Ubuntu Disco)
       Status: New => In Progress

** Changed in: linux (Ubuntu Eoan)
       Status: Incomplete => In Progress

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1840028

Title:
  NULL pointer dereference when Inserting the VIMC module

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1840028/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to