mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [BUG] KASAN: slab-use-after-free in au0828_dvb_register
@ 2026-05-29  0:17 Shuangpeng
  2026-05-29  8:30 ` xiaopeitux
  0 siblings, 1 reply; 8+ messages in thread
From: Shuangpeng @ 2026-05-29  0:17 UTC (permalink / raw)
  To: mchehab, mingo, hverkuil+cisco, tglx, brad; +Cc: linux-media, linux-kernel

Hi Kernel Maintainers,

We hit the following KASAN report while testing current upstream kernel:

KASAN: slab-use-after-free in au0828_dvb_register

on commit: e8c2f9fdadee7cbc75134dc463c1e0d856d6e5c7 (May 25 2026)

The reproducer and .config files are here.
https://gist.github.com/shuangpengbai/c31163f8ef234ba4fe85038c2f97f9cc

I’m happy to test debug patches or provide additional information.

Reported-by: Shuangpeng Bai <shuangpeng.kernel@gmail.com>


[  141.481576][   T48] ==================================================================
[  141.482348][   T48] BUG: KASAN: slab-use-after-free in au0828_dvb_register (drivers/media/usb/au0828/au0828-dvb.c:636)
[  141.483148][   T48] Read of size 8 at addr ffff888171d4a118 by task kworker/1:1/48
[  141.483903][   T48]
[  141.484144][   T48] Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.34
[  141.484148][   T48] Workqueue: usb_hub_wq hub_event
[  141.484154][   T48] Call Trace:
[  141.484157][   T48]  <TASK>
[  141.484159][   T48]  dump_stack_lvl (lib/dump_stack.c:94 lib/dump_stack.c:120)
[  141.484164][   T48]  print_report (mm/kasan/report.c:378 mm/kasan/report.c:482)
[  141.484177][   T48]  kasan_report (mm/kasan/report.c:595)
[  141.484183][   T48]  au0828_dvb_register (drivers/media/usb/au0828/au0828-dvb.c:636)
[  141.484190][   T48]  au0828_usb_probe (drivers/media/usb/au0828/au0828-core.c:733)
[  141.484193][   T48]  usb_probe_interface (drivers/usb/core/driver.c:396)
[  141.484198][   T48]  really_probe (drivers/base/dd.c:? drivers/base/dd.c:709)
[  141.484204][   T48]  __driver_probe_device (drivers/base/dd.c:871)
[  141.484207][   T48]  driver_probe_device (drivers/base/dd.c:901)
[  141.484211][   T48]  __device_attach_driver (drivers/base/dd.c:1029)
[  141.484217][   T48]  bus_for_each_drv (drivers/base/bus.c:500)
[  141.484264][   T48]  __device_attach (drivers/base/dd.c:1101)
[  141.484289][   T48]  device_initial_probe (drivers/base/dd.c:1156)
[  141.484292][   T48]  bus_probe_device (drivers/base/bus.c:613)
[  141.484296][   T48]  device_add (drivers/base/core.c:3706)
[  141.484299][   T48]  usb_set_configuration (drivers/usb/core/message.c:2268)
[  141.484303][   T48]  usb_generic_driver_probe (drivers/usb/core/generic.c:250)
[  141.484308][   T48]  usb_probe_device (drivers/usb/core/driver.c:291)
[  141.484311][   T48]  really_probe (drivers/base/dd.c:? drivers/base/dd.c:709)
[  141.484315][   T48]  __driver_probe_device (drivers/base/dd.c:871)
[  141.484318][   T48]  driver_probe_device (drivers/base/dd.c:901)
[  141.484321][   T48]  __device_attach_driver (drivers/base/dd.c:1029)
[  141.484328][   T48]  bus_for_each_drv (drivers/base/bus.c:500)
[  141.484346][   T48]  __device_attach (drivers/base/dd.c:1101)
[  141.484367][   T48]  device_initial_probe (drivers/base/dd.c:1156)
[  141.484370][   T48]  bus_probe_device (drivers/base/bus.c:613)
[  141.484374][   T48]  device_add (drivers/base/core.c:3706)
[  141.484376][   T48]  usb_new_device (drivers/usb/core/hub.c:2695)
[  141.484386][   T48]  hub_event (drivers/usb/core/hub.c:5567 drivers/usb/core/hub.c:5707 drivers/usb/core/hub.c:5871 drivers/usb/core/hub.c:5953)
[  141.484406][   T48]  process_scheduled_works (kernel/workqueue.c:3314 kernel/workqueue.c:3397)
[  141.484412][   T48]  worker_thread (kernel/workqueue.c:3478)
[  141.484420][   T48]  kthread (kernel/kthread.c:436)
[  141.484431][   T48]  ret_from_fork (arch/x86/kernel/process.c:158)
[  141.484445][   T48]  ret_from_fork_asm (arch/x86/entry/entry_64.S:245)
[  141.484450][   T48]  </TASK>
[  141.484451][   T48]
[  141.523531][   T48] Freed by task 48 on cpu 1 at 141.481575s:
[  141.524120][   T48]  kasan_save_track (mm/kasan/common.c:57 mm/kasan/common.c:78)
[  141.524594][   T48]  kasan_save_free_info (mm/kasan/generic.c:584)
[  141.525089][   T48]  __kasan_slab_free (mm/kasan/common.c:253 mm/kasan/common.c:285)
[  141.525570][   T48]  kfree (./include/linux/kasan.h:235 mm/slub.c:2689 mm/slub.c:6251 mm/slub.c:6566)
[  141.525957][   T48]  au8522_release_state (drivers/media/dvb-frontends/au8522_common.c:124)
[  141.526467][   T48]  dvb_frontend_put (drivers/media/dvb-core/dvb_frontend.c:3093 drivers/media/dvb-core/dvb_frontend.c:141 drivers/media/dvb-core/dvb_frontend.c:166)
[  141.526957][   T48]  au0828_dvb_register (drivers/media/usb/au0828/au0828-dvb.c:518 drivers/media/usb/au0828/au0828-dvb.c:634)
[  141.527469][   T48]  au0828_usb_probe (drivers/media/usb/au0828/au0828-core.c:733)
[  141.527952][   T48]  usb_probe_interface (drivers/usb/core/driver.c:396)
[  141.528455][   T48]  really_probe (drivers/base/dd.c:? drivers/base/dd.c:709)
[  141.528908][   T48]  __driver_probe_device (drivers/base/dd.c:871)
[  141.529426][   T48]  driver_probe_device (drivers/base/dd.c:901)
[  141.529932][   T48]  __device_attach_driver (drivers/base/dd.c:1029)
[  141.530459][   T48]  bus_for_each_drv (drivers/base/bus.c:500)
[  141.530949][   T48]  __device_attach (drivers/base/dd.c:1101)
[  141.531419][   T48]  device_initial_probe (drivers/base/dd.c:1156)
[  141.531923][   T48]  bus_probe_device (drivers/base/bus.c:613)
[  141.532404][   T48]  device_add (drivers/base/core.c:3706)
[  141.532840][   T48]  usb_set_configuration (drivers/usb/core/message.c:2268)
[  141.533373][   T48]  usb_generic_driver_probe (drivers/usb/core/generic.c:250)
[  141.533907][   T48]  usb_probe_device (drivers/usb/core/driver.c:291)
[  141.534377][   T48]  really_probe (drivers/base/dd.c:? drivers/base/dd.c:709)
[  141.534833][   T48]  __driver_probe_device (drivers/base/dd.c:871)
[  141.535352][   T48]  driver_probe_device (drivers/base/dd.c:901)
[  141.535856][   T48]  __device_attach_driver (drivers/base/dd.c:1029)
[  141.536384][   T48]  bus_for_each_drv (drivers/base/bus.c:500)
[  141.536869][   T48]  __device_attach (drivers/base/dd.c:1101)
[  141.537340][   T48]  device_initial_probe (drivers/base/dd.c:1156)
[  141.537839][   T48]  bus_probe_device (drivers/base/bus.c:613)
[  141.538320][   T48]  device_add (drivers/base/core.c:3706)
[  141.538753][   T48]  usb_new_device (drivers/usb/core/hub.c:2695)
[  141.539226][   T48]  hub_event (drivers/usb/core/hub.c:5567 drivers/usb/core/hub.c:5707 drivers/usb/core/hub.c:5871 drivers/usb/core/hub.c:5953)
[  141.539672][   T48]  process_scheduled_works (kernel/workqueue.c:3314 kernel/workqueue.c:3397)
[  141.540205][   T48]  worker_thread (kernel/workqueue.c:3478)
[  141.540666][   T48]  kthread (kernel/kthread.c:436)
[  141.541069][   T48]  ret_from_fork (arch/x86/kernel/process.c:158)
[  141.541524][   T48]  ret_from_fork_asm (arch/x86/entry/entry_64.S:245)
[  141.541999][   T48]
[  141.542236][   T48] The buggy address belongs to the object at ffff888171d4a000
[  141.542236][   T48]  which belongs to the cache kmalloc-4k of size 4096
[  141.543602][   T48] The buggy address is located 280 bytes inside of
[  141.543602][   T48]  freed 4096-byte region [ffff888171d4a000, ffff888171d4b000)



Best,
Shuangpeng


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re:[BUG] KASAN: slab-use-after-free in au0828_dvb_register
  2026-05-29  0:17 [BUG] KASAN: slab-use-after-free in au0828_dvb_register Shuangpeng
@ 2026-05-29  8:30 ` xiaopeitux
  2026-05-29 19:22   ` [BUG] " Shuangpeng
  0 siblings, 1 reply; 8+ messages in thread
From: xiaopeitux @ 2026-05-29  8:30 UTC (permalink / raw)
  To: shuangpeng.kernel
  Cc: brad, hverkuil+cisco, linux-kernel, linux-media, mchehab, mingo,
	tglx, Pei Xiao

From: Pei Xiao <xiaopei01@kylinos.cn>

> Hi Kernel Maintainers,
>
> We hit the following KASAN report while testing current upstream kernel:
>
> KASAN: slab-use-after-free in au0828_dvb_register
>
> on commit: e8c2f9fdadee7cbc75134dc463c1e0d856d6e5c7 (May 25 2026)
>
> The reproducer and .config files are here.
> https://gist.github.com/shuangpengbai/c31163f8ef234ba4fe85038c2f97f9cc
>
> I’m happy to test debug patches or provide additional information.
>
> Reported-by: Shuangpeng Bai <shuangpeng.kernel@gmail.com>
Can you help post all the crash logs? 
Does the kernel log have this print: 
"The frontend of your DVB/ATSC card isn't supported yet." 
Please help post all the logs, thank you!

>
>
> [  141.481576][   T48] ==================================================================
> [  141.482348][   T48] BUG: KASAN: slab-use-after-free in au0828_dvb_register (drivers/media/usb/au0828/au0828-dvb.c:636)
> [  141.483148][   T48] Read of size 8 at addr ffff888171d4a118 by task kworker/1:1/48
> [  141.483903][   T48]
> [  141.484144][   T48] Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.34
> [  141.484148][   T48] Workqueue: usb_hub_wq hub_event
> [  141.484154][   T48] Call Trace:
> [  141.484157][   T48]  <TASK>
> [  141.484159][   T48]  dump_stack_lvl (lib/dump_stack.c:94 lib/dump_stack.c:120)
> [  141.484164][   T48]  print_report (mm/kasan/report.c:378 mm/kasan/report.c:482)
> [  141.484177][   T48]  kasan_report (mm/kasan/report.c:595)
> [  141.484183][   T48]  au0828_dvb_register (drivers/media/usb/au0828/au0828-dvb.c:636)
> [  141.484190][   T48]  au0828_usb_probe (drivers/media/usb/au0828/au0828-core.c:733)
> [  141.484193][   T48]  usb_probe_interface (drivers/usb/core/driver.c:396)
> [  141.484198][   T48]  really_probe (drivers/base/dd.c:? drivers/base/dd.c:709)
> [  141.484204][   T48]  __driver_probe_device (drivers/base/dd.c:871)
> [  141.484207][   T48]  driver_probe_device (drivers/base/dd.c:901)
> [  141.484211][   T48]  __device_attach_driver (drivers/base/dd.c:1029)
> [  141.484217][   T48]  bus_for_each_drv (drivers/base/bus.c:500)
> [  141.484264][   T48]  __device_attach (drivers/base/dd.c:1101)
> [  141.484289][   T48]  device_initial_probe (drivers/base/dd.c:1156)
> [  141.484292][   T48]  bus_probe_device (drivers/base/bus.c:613)
> [  141.484296][   T48]  device_add (drivers/base/core.c:3706)
> [  141.484299][   T48]  usb_set_configuration (drivers/usb/core/message.c:2268)
> [  141.484303][   T48]  usb_generic_driver_probe (drivers/usb/core/generic.c:250)
> [  141.484308][   T48]  usb_probe_device (drivers/usb/core/driver.c:291)
> [  141.484311][   T48]  really_probe (drivers/base/dd.c:? drivers/base/dd.c:709)
> [  141.484315][   T48]  __driver_probe_device (drivers/base/dd.c:871)
> [  141.484318][   T48]  driver_probe_device (drivers/base/dd.c:901)
> [  141.484321][   T48]  __device_attach_driver (drivers/base/dd.c:1029)
> [  141.484328][   T48]  bus_for_each_drv (drivers/base/bus.c:500)
> [  141.484346][   T48]  __device_attach (drivers/base/dd.c:1101)
> [  141.484367][   T48]  device_initial_probe (drivers/base/dd.c:1156)
> [  141.484370][   T48]  bus_probe_device (drivers/base/bus.c:613)
> [  141.484374][   T48]  device_add (drivers/base/core.c:3706)
> [  141.484376][   T48]  usb_new_device (drivers/usb/core/hub.c:2695)
> [  141.484386][   T48]  hub_event (drivers/usb/core/hub.c:5567 drivers/usb/core/hub.c:5707 drivers/usb/core/hub.c:5871 drivers/usb/core/hub.c:5953)
> [  141.484406][   T48]  process_scheduled_works (kernel/workqueue.c:3314 kernel/workqueue.c:3397)
> [  141.484412][   T48]  worker_thread (kernel/workqueue.c:3478)
> [  141.484420][   T48]  kthread (kernel/kthread.c:436)
> [  141.484431][   T48]  ret_from_fork (arch/x86/kernel/process.c:158)
> [  141.484445][   T48]  ret_from_fork_asm (arch/x86/entry/entry_64.S:245)
> [  141.484450][   T48]  </TASK>
> [  141.484451][   T48]
> [  141.523531][   T48] Freed by task 48 on cpu 1 at 141.481575s:
> [  141.524120][   T48]  kasan_save_track (mm/kasan/common.c:57 mm/kasan/common.c:78)
> [  141.524594][   T48]  kasan_save_free_info (mm/kasan/generic.c:584)
> [  141.525089][   T48]  __kasan_slab_free (mm/kasan/common.c:253 mm/kasan/common.c:285)
> [  141.525570][   T48]  kfree (./include/linux/kasan.h:235 mm/slub.c:2689 mm/slub.c:6251 mm/slub.c:6566)
> [  141.525957][   T48]  au8522_release_state (drivers/media/dvb-frontends/au8522_common.c:124)
> [  141.526467][   T48]  dvb_frontend_put (drivers/media/dvb-core/dvb_frontend.c:3093 drivers/media/dvb-core/dvb_frontend.c:141 drivers/media/dvb-core/dvb_frontend.c:166)
> [  141.526957][   T48]  au0828_dvb_register (drivers/media/usb/au0828/au0828-dvb.c:518 drivers/media/usb/au0828/au0828-dvb.c:634)
> [  141.527469][   T48]  au0828_usb_probe (drivers/media/usb/au0828/au0828-core.c:733)
> [  141.527952][   T48]  usb_probe_interface (drivers/usb/core/driver.c:396)
> [  141.528455][   T48]  really_probe (drivers/base/dd.c:? drivers/base/dd.c:709)
> [  141.528908][   T48]  __driver_probe_device (drivers/base/dd.c:871)
> [  141.529426][   T48]  driver_probe_device (drivers/base/dd.c:901)
> [  141.529932][   T48]  __device_attach_driver (drivers/base/dd.c:1029)
> [  141.530459][   T48]  bus_for_each_drv (drivers/base/bus.c:500)
> [  141.530949][   T48]  __device_attach (drivers/base/dd.c:1101)
> [  141.531419][   T48]  device_initial_probe (drivers/base/dd.c:1156)
> [  141.531923][   T48]  bus_probe_device (drivers/base/bus.c:613)
> [  141.532404][   T48]  device_add (drivers/base/core.c:3706)
> [  141.532840][   T48]  usb_set_configuration (drivers/usb/core/message.c:2268)
> [  141.533373][   T48]  usb_generic_driver_probe (drivers/usb/core/generic.c:250)
> [  141.533907][   T48]  usb_probe_device (drivers/usb/core/driver.c:291)
> [  141.534377][   T48]  really_probe (drivers/base/dd.c:? drivers/base/dd.c:709)
> [  141.534833][   T48]  __driver_probe_device (drivers/base/dd.c:871)
> [  141.535352][   T48]  driver_probe_device (drivers/base/dd.c:901)
> [  141.535856][   T48]  __device_attach_driver (drivers/base/dd.c:1029)
> [  141.536384][   T48]  bus_for_each_drv (drivers/base/bus.c:500)
> [  141.536869][   T48]  __device_attach (drivers/base/dd.c:1101)
> [  141.537340][   T48]  device_initial_probe (drivers/base/dd.c:1156)
> [  141.537839][   T48]  bus_probe_device (drivers/base/bus.c:613)
> [  141.538320][   T48]  device_add (drivers/base/core.c:3706)
> [  141.538753][   T48]  usb_new_device (drivers/usb/core/hub.c:2695)
> [  141.539226][   T48]  hub_event (drivers/usb/core/hub.c:5567 drivers/usb/core/hub.c:5707 drivers/usb/core/hub.c:5871 drivers/usb/core/hub.c:5953)
> [  141.539672][   T48]  process_scheduled_works (kernel/workqueue.c:3314 kernel/workqueue.c:3397)
> [  141.540205][   T48]  worker_thread (kernel/workqueue.c:3478)
> [  141.540666][   T48]  kthread (kernel/kthread.c:436)
> [  141.541069][   T48]  ret_from_fork (arch/x86/kernel/process.c:158)
> [  141.541524][   T48]  ret_from_fork_asm (arch/x86/entry/entry_64.S:245)
> [  141.541999][   T48]
> [  141.542236][   T48] The buggy address belongs to the object at ffff888171d4a000
> [  141.542236][   T48]  which belongs to the cache kmalloc-4k of size 4096
> [  141.543602][   T48] The buggy address is located 280 bytes inside of
> [  141.543602][   T48]  freed 4096-byte region [ffff888171d4a000, ffff888171d4b000)


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [BUG] KASAN: slab-use-after-free in au0828_dvb_register
  2026-05-29  8:30 ` xiaopeitux
@ 2026-05-29 19:22   ` Shuangpeng
  2026-06-01  1:18     ` Pei Xiao
  2026-06-01  3:38     ` Pei Xiao
  0 siblings, 2 replies; 8+ messages in thread
From: Shuangpeng @ 2026-05-29 19:22 UTC (permalink / raw)
  To: xiaopeitux
  Cc: brad, hverkuil+cisco, linux-kernel, linux-media, mchehab, mingo,
	tglx, Pei Xiao



> On May 29, 2026, at 04:30, xiaopeitux@foxmail.com wrote:
> 
> From: Pei Xiao <xiaopei01@kylinos.cn>
> 
>> Hi Kernel Maintainers,
>> 
>> We hit the following KASAN report while testing current upstream kernel:
>> 
>> KASAN: slab-use-after-free in au0828_dvb_register
>> 
>> on commit: e8c2f9fdadee7cbc75134dc463c1e0d856d6e5c7 (May 25 2026)
>> 
>> The reproducer and .config files are here.
>> https://gist.github.com/shuangpengbai/c31163f8ef234ba4fe85038c2f97f9cc
>> 
>> I’m happy to test debug patches or provide additional information.
>> 
>> Reported-by: Shuangpeng Bai <shuangpeng.kernel@gmail.com>
> Can you help post all the crash logs? 
> Does the kernel log have this print: 
> "The frontend of your DVB/ATSC card isn't supported yet." 

I did not see this message in log.


> Please help post all the logs, thank you!

Thank you for taking a look. All terminal outputs after running the reproducer:

[   64.807294][   T42] usb 3-1: new high-speed USB device number 2 using dummy_hcd
[   64.958989][   T42] usb 3-1: New USB device found, idVendor=0fe9, idProduct=d620, bcdDevice= 1.00
[   64.961560][   T42] usb 3-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[   65.351442][   T42] au0828: i2c bus registered
[   65.634777][   T42] au8522 1-0047: creating new instance
[   65.655406][   T42] DVB: Unable to find symbol xc5000_attach()
[   65.656022][   T42] dvbdev: DVB: registering new adapter (au0828)
[   65.656632][   T42] au0828: dvb_register_frontend failed (errno = -12)
[   65.658957][   T42] au8522 1-0047: destroying instance
[   65.659499][   T42] ==================================================================
[   65.660261][   T42] BUG: KASAN: slab-use-after-free in au0828_dvb_register+0x1280/0x15f0
[   65.661023][   T42] Read of size 8 at addr ffff8881685f4118 by task kworker/1:1/42
[   65.661742][   T42]
[   65.661973][   T42] CPU: 1 UID: 0 PID: 42 Comm: kworker/1:1 Not tainted 7.1.0-rc5-00006-ge8c2f9fdadee #16 PREEMPT(
[   65.661978][   T42] Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debia4
[   65.661981][   T42] Workqueue: usb_hub_wq hub_event
[   65.661988][   T42] Call Trace:
[   65.661991][   T42]  <TASK>
[   65.661993][   T42]  dump_stack_lvl+0x26/0x80
[   65.661999][   T42]  print_report+0x16a/0x5d0
[   65.662013][   T42]  kasan_report+0xc3/0x100
[   65.662019][   T42]  au0828_dvb_register+0x1280/0x15f0
[   65.662026][   T42]  au0828_usb_probe+0x353/0x4b0
[   65.662029][   T42]  usb_probe_interface+0x4aa/0xa40
[   65.662034][   T42]  really_probe+0x259/0x9a0
[   65.662041][   T42]  __driver_probe_device+0x18b/0x370
[   65.662045][   T42]  driver_probe_device+0x4b/0x1e0
[   65.662049][   T42]  __device_attach_driver+0x1d0/0x2f0
[   65.662055][   T42]  bus_for_each_drv+0x22a/0x260
[   65.663294][   T42]  __device_attach+0x25a/0x480
[   65.663321][   T42]  device_initial_probe+0x68/0xa0
[   65.663324][   T42]  bus_probe_device+0x10a/0x1d0
[   65.663328][   T42]  device_add+0x56b/0x9c0
[   65.663332][   T42]  usb_set_configuration+0x1775/0x1d80
[   65.663337][   T42]  usb_generic_driver_probe+0x61/0xf0
[   65.663343][   T42]  usb_probe_device+0xd3/0x2a0
[   65.663346][   T42]  really_probe+0x259/0x9a0
[   65.663350][   T42]  __driver_probe_device+0x18b/0x370
[   65.663354][   T42]  driver_probe_device+0x4b/0x1e0
[   65.663357][   T42]  __device_attach_driver+0x1d0/0x2f0
[   65.663363][   T42]  bus_for_each_drv+0x22a/0x260
[   65.663381][   T42]  __device_attach+0x25a/0x480
[   65.663403][   T42]  device_initial_probe+0x68/0xa0
[   65.663405][   T42]  bus_probe_device+0x10a/0x1d0
[   65.663409][   T42]  device_add+0x56b/0x9c0
[   65.663412][   T42]  usb_new_device+0xbdd/0x1830
[   65.663423][   T42]  hub_event+0x2358/0x4090
[   65.663443][   T42]  process_scheduled_works+0x73d/0xed0
[   65.663451][   T42]  worker_thread+0x7d6/0xb60
[   65.663459][   T42]  kthread+0x322/0x410
[   65.663470][   T42]  ret_from_fork+0x285/0x750
[   65.663485][   T42]  ret_from_fork_asm+0x1a/0x30
[   65.663491][   T42]  </TASK>
[   65.663493][   T42]
[   65.702422][   T42] Freed by task 42 on cpu 1 at 65.659497s:
[   65.702994][   T42]  kasan_save_track+0x2e/0x90
[   65.703471][   T42]  kasan_save_free_info+0x3c/0x50
[   65.703965][   T42]  __kasan_slab_free+0x36/0x60
[   65.704450][   T42]  kfree+0x154/0x450
[   65.704839][   T42]  au8522_release_state+0x1b6/0x210
[   65.705364][   T42]  dvb_frontend_put+0x12a/0x170
[   65.705848][   T42]  au0828_dvb_register+0xfd9/0x15f0
[   65.706373][   T42]  au0828_usb_probe+0x353/0x4b0
[   65.706854][   T42]  usb_probe_interface+0x4aa/0xa40
[   65.707373][   T42]  really_probe+0x259/0x9a0
[   65.707822][   T42]  __driver_probe_device+0x18b/0x370
[   65.708347][   T42]  driver_probe_device+0x4b/0x1e0
[   65.708845][   T42]  __device_attach_driver+0x1d0/0x2f0
[   65.709383][   T42]  bus_for_each_drv+0x22a/0x260
[   65.709864][   T42]  __device_attach+0x25a/0x480
[   65.710339][   T42]  device_initial_probe+0x68/0xa0
[   65.710836][   T42]  bus_probe_device+0x10a/0x1d0
[   65.711323][   T42]  device_add+0x56b/0x9c0
[   65.711750][   T42]  usb_set_configuration+0x1775/0x1d80
[   65.712294][   T42]  usb_generic_driver_probe+0x61/0xf0
[   65.712822][   T42]  usb_probe_device+0xd3/0x2a0
[   65.713305][   T42]  really_probe+0x259/0x9a0
[   65.713752][   T42]  __driver_probe_device+0x18b/0x370
[   65.714282][   T42]  driver_probe_device+0x4b/0x1e0
[   65.714779][   T42]  __device_attach_driver+0x1d0/0x2f0
[   65.715313][   T42]  bus_for_each_drv+0x22a/0x260
[   65.715794][   T42]  __device_attach+0x25a/0x480
[   65.716271][   T42]  device_initial_probe+0x68/0xa0
[   65.716767][   T42]  bus_probe_device+0x10a/0x1d0
[   65.717262][   T42]  device_add+0x56b/0x9c0
[   65.717690][   T42]  usb_new_device+0xbdd/0x1830
[   65.717869][    C0] clocksource: Watchdog remote CPU 1 read timed out
[   65.718172][   T42]  hub_event+0x2358/0x4090
[   65.718177][   T42]  process_scheduled_works+0x73d/0xed0
[   65.718180][   T42]  worker_thread+0x7d6/0xb60
[   65.718183][   T42]  kthread+0x322/0x410
[   65.718187][   T42]  ret_from_fork+0x285/0x750
[   65.718189][   T42]  ret_from_fork_asm+0x1a/0x30
[   65.718192][   T42]
[   65.718194][   T42] The buggy address belongs to the object at ffff8881685f4000
[   65.718194][   T42]  which belongs to the cache kmalloc-4k of size 4096
[   65.718197][   T42] The buggy address is located 280 bytes inside of
[   65.718197][   T42]  freed 4096-byte region [ffff8881685f4000, ffff8881685f5000)
[   65.718200][   T42]
[   65.718201][   T42] The buggy address belongs to the physical page:
[   65.718204][   T42] page: refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x1685f0
[   65.718209][   T42] head: order:3 mapcount:0 entire_mapcount:0 nr_pages_mapped:0 pincount:0
[   65.718212][   T42] flags: 0x17ff00000000040(head|node=0|zone=2|lastcpupid=0x7ff)
[   65.729357][   T42] page_type: f5(slab)
[   65.729757][   T42] raw: 017ff00000000040 ffff888100042140 dead000000000100 dead000000000122
[   65.730603][   T42] raw: 0000000000000000 0000000800040004 00000000f5000000 0000000000000000
[   65.731450][   T42] head: 017ff00000000040 ffff888100042140 dead000000000100 dead000000000122
[   65.732301][   T42] head: 0000000000000000 0000000800040004 00000000f5000000 0000000000000000
[   65.733211][   T42] head: 017ff00000000003 fffffffffffffe01 00000000ffffffff 00000000ffffffff
[   65.734064][   T42] head: ffffffffffffffff 0000000000000000 00000000ffffffff 0000000000000008
[   65.734922][   T42] page dumped because: kasan: bad access detected
[   65.735562][   T42] page_owner tracks the page as allocated
[   65.736133][   T42] page last allocated via order 3, migratetype Unmovable, gfp_mask 0xd20c0(__GFP_IO|__GFP_FS|__G2
[   65.738177][   T42]  post_alloc_hook+0x152/0x180
[   65.738654][   T42]  get_page_from_freelist+0x3996/0x3b50
[   65.739207][   T42]  __alloc_frozen_pages_noprof+0x243/0x750
[   65.739783][   T42]  allocate_slab+0x76/0x5e0
[   65.740242][   T42]  refill_objects+0x2e1/0x360
[   65.740706][   T42]  __pcs_replace_empty_main+0x233/0x440
[   65.741262][   T42]  __kmalloc_cache_noprof+0x2d0/0x490
[   65.741791][   T42]  au8522_get_state+0x266/0x4c0
[   65.742280][   T42]  au8522_attach+0xba/0x2d0
[   65.742728][   T42]  au0828_dvb_register+0xcc/0x15f0
[   65.743241][   T42]  au0828_usb_probe+0x353/0x4b0
[   65.743723][   T42]  usb_probe_interface+0x4aa/0xa40
[   65.744264][   T42]  really_probe+0x259/0x9a0
[   65.744713][   T42]  __driver_probe_device+0x18b/0x370
[   65.745246][   T42]  driver_probe_device+0x4b/0x1e0
[   65.745745][   T42]  __device_attach_driver+0x1d0/0x2f0
[   65.746284][   T42] page last free pid 4578 tgid 4578 stack trace:
[   65.746909][   T42]  __free_frozen_pages+0xb8c/0xcb0
[   65.747427][   T42]  __slab_free+0x219/0x260
[   65.747870][   T42]  qlist_free_all+0x33/0x120
[   65.748339][   T42]  kasan_quarantine_reduce+0x152/0x170
[   65.748877][   T42]  __kasan_slab_alloc+0x1f/0x60
[   65.749368][   T42]  kmem_cache_alloc_noprof+0x1f0/0x480
[   65.749908][   T42]  do_getname+0x2a/0x1c0
[   65.750337][   T42]  do_sys_openat2+0x99/0x190
[   65.750798][   T42]  __x64_sys_openat+0x20b/0x260
[   65.751287][   T42]  do_syscall_64+0x125/0x590
[   65.751744][   T42]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
[   65.752334][   T42]
[   65.752572][   T42] Memory state around the buggy address:
[   65.753132][   T42]  ffff8881685f4000: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
[   65.753918][   T42]  ffff8881685f4080: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
[   65.754712][   T42] >ffff8881685f4100: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
[   65.755504][   T42]                             ^
[   65.755985][   T42]  ffff8881685f4180: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
[   65.756775][   T42]  ffff8881685f4200: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
[   65.757575][   T42] ==================================================================
[   65.758570][   T42] Kernel panic - not syncing: KASAN: panic_on_warn set ...
[   65.759306][   T42] CPU: 1 UID: 0 PID: 42 Comm: kworker/1:1 Not tainted 7.1.0-rc5-00006-ge8c2f9fdadee #16 PREEMPT(
[   65.760402][   T42] Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debia4
[   65.761615][   T42] Workqueue: usb_hub_wq hub_event
[   65.762263][   T42] Call Trace:
[   65.762658][   T42]  <TASK>
[   65.762956][   T42]  dump_stack_lvl+0x26/0x80
[   65.763420][   T42]  vpanic+0x37d/0x710
[   65.764686][   T42]  panic+0x9f/0xa0
[   65.767120][   T42]  check_panic_on_warn+0x58/0x70
[   65.768155][   T42]  end_report+0x44/0xe0
[   65.769116][   T42]  kasan_report+0xd4/0x100
[   65.770092][   T42]  au0828_dvb_register+0x1280/0x15f0
[   65.771097][   T42]  au0828_usb_probe+0x353/0x4b0
[   65.771586][   T42]  usb_probe_interface+0x4aa/0xa40
[   65.772089][   T42]  really_probe+0x259/0x9a0
[   65.772549][   T42]  __driver_probe_device+0x18b/0x370
[   65.773069][   T42]  driver_probe_device+0x4b/0x1e0
[   65.773576][   T42]  __device_attach_driver+0x1d0/0x2f0
[   65.774692][   T42]  bus_for_each_drv+0x22a/0x260
[   65.777453][   T42]  __device_attach+0x25a/0x480
[   65.780818][   T42]  device_initial_probe+0x68/0xa0
[   65.781322][   T42]  bus_probe_device+0x10a/0x1d0
[   65.781800][   T42]  device_add+0x56b/0x9c0
[   65.782284][   T42]  usb_set_configuration+0x1775/0x1d80
[   65.782822][   T42]  usb_generic_driver_probe+0x61/0xf0
[   65.783361][   T42]  usb_probe_device+0xd3/0x2a0
[   65.783832][   T42]  really_probe+0x259/0x9a0
[   65.784286][   T42]  __driver_probe_device+0x18b/0x370
[   65.784804][   T42]  driver_probe_device+0x4b/0x1e0
[   65.785304][   T42]  __device_attach_driver+0x1d0/0x2f0
[   65.786416][   T42]  bus_for_each_drv+0x22a/0x260
[   65.789198][   T42]  __device_attach+0x25a/0x480
[   65.792606][   T42]  device_initial_probe+0x68/0xa0
[   65.793101][   T42]  bus_probe_device+0x10a/0x1d0
[   65.793602][   T42]  device_add+0x56b/0x9c0
[   65.794028][   T42]  usb_new_device+0xbdd/0x1830
[   65.795025][   T42]  hub_event+0x2358/0x4090
[   65.797580][   T42]  process_scheduled_works+0x73d/0xed0
[   65.798124][   T42]  worker_thread+0x7d6/0xb60
[   65.799085][   T42]  kthread+0x322/0x410
[   65.800465][   T42]  ret_from_fork+0x285/0x750
[   65.802356][   T42]  ret_from_fork_asm+0x1a/0x30
[   65.802830][   T42]  </TASK>
[   65.803886][   T42] Kernel Offset: disabled
[   65.804329][   T42] ---[ end Kernel panic - not syncing: KASAN: panic_on_warn set ... ]—

> 
>> 
>> 
>> [  141.481576][   T48] ==================================================================
>> [  141.482348][   T48] BUG: KASAN: slab-use-after-free in au0828_dvb_register (drivers/media/usb/au0828/au0828-dvb.c:636)
>> [  141.483148][   T48] Read of size 8 at addr ffff888171d4a118 by task kworker/1:1/48
>> [  141.483903][   T48]
>> [  141.484144][   T48] Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.34
>> [  141.484148][   T48] Workqueue: usb_hub_wq hub_event
>> [  141.484154][   T48] Call Trace:
>> [  141.484157][   T48]  <TASK>
>> [  141.484159][   T48]  dump_stack_lvl (lib/dump_stack.c:94 lib/dump_stack.c:120)
>> [  141.484164][   T48]  print_report (mm/kasan/report.c:378 mm/kasan/report.c:482)
>> [  141.484177][   T48]  kasan_report (mm/kasan/report.c:595)
>> [  141.484183][   T48]  au0828_dvb_register (drivers/media/usb/au0828/au0828-dvb.c:636)
>> [  141.484190][   T48]  au0828_usb_probe (drivers/media/usb/au0828/au0828-core.c:733)
>> [  141.484193][   T48]  usb_probe_interface (drivers/usb/core/driver.c:396)
>> [  141.484198][   T48]  really_probe (drivers/base/dd.c:? drivers/base/dd.c:709)
>> [  141.484204][   T48]  __driver_probe_device (drivers/base/dd.c:871)
>> [  141.484207][   T48]  driver_probe_device (drivers/base/dd.c:901)
>> [  141.484211][   T48]  __device_attach_driver (drivers/base/dd.c:1029)
>> [  141.484217][   T48]  bus_for_each_drv (drivers/base/bus.c:500)
>> [  141.484264][   T48]  __device_attach (drivers/base/dd.c:1101)
>> [  141.484289][   T48]  device_initial_probe (drivers/base/dd.c:1156)
>> [  141.484292][   T48]  bus_probe_device (drivers/base/bus.c:613)
>> [  141.484296][   T48]  device_add (drivers/base/core.c:3706)
>> [  141.484299][   T48]  usb_set_configuration (drivers/usb/core/message.c:2268)
>> [  141.484303][   T48]  usb_generic_driver_probe (drivers/usb/core/generic.c:250)
>> [  141.484308][   T48]  usb_probe_device (drivers/usb/core/driver.c:291)
>> [  141.484311][   T48]  really_probe (drivers/base/dd.c:? drivers/base/dd.c:709)
>> [  141.484315][   T48]  __driver_probe_device (drivers/base/dd.c:871)
>> [  141.484318][   T48]  driver_probe_device (drivers/base/dd.c:901)
>> [  141.484321][   T48]  __device_attach_driver (drivers/base/dd.c:1029)
>> [  141.484328][   T48]  bus_for_each_drv (drivers/base/bus.c:500)
>> [  141.484346][   T48]  __device_attach (drivers/base/dd.c:1101)
>> [  141.484367][   T48]  device_initial_probe (drivers/base/dd.c:1156)
>> [  141.484370][   T48]  bus_probe_device (drivers/base/bus.c:613)
>> [  141.484374][   T48]  device_add (drivers/base/core.c:3706)
>> [  141.484376][   T48]  usb_new_device (drivers/usb/core/hub.c:2695)
>> [  141.484386][   T48]  hub_event (drivers/usb/core/hub.c:5567 drivers/usb/core/hub.c:5707 drivers/usb/core/hub.c:5871 drivers/usb/core/hub.c:5953)
>> [  141.484406][   T48]  process_scheduled_works (kernel/workqueue.c:3314 kernel/workqueue.c:3397)
>> [  141.484412][   T48]  worker_thread (kernel/workqueue.c:3478)
>> [  141.484420][   T48]  kthread (kernel/kthread.c:436)
>> [  141.484431][   T48]  ret_from_fork (arch/x86/kernel/process.c:158)
>> [  141.484445][   T48]  ret_from_fork_asm (arch/x86/entry/entry_64.S:245)
>> [  141.484450][   T48]  </TASK>
>> [  141.484451][   T48]
>> [  141.523531][   T48] Freed by task 48 on cpu 1 at 141.481575s:
>> [  141.524120][   T48]  kasan_save_track (mm/kasan/common.c:57 mm/kasan/common.c:78)
>> [  141.524594][   T48]  kasan_save_free_info (mm/kasan/generic.c:584)
>> [  141.525089][   T48]  __kasan_slab_free (mm/kasan/common.c:253 mm/kasan/common.c:285)
>> [  141.525570][   T48]  kfree (./include/linux/kasan.h:235 mm/slub.c:2689 mm/slub.c:6251 mm/slub.c:6566)
>> [  141.525957][   T48]  au8522_release_state (drivers/media/dvb-frontends/au8522_common.c:124)
>> [  141.526467][   T48]  dvb_frontend_put (drivers/media/dvb-core/dvb_frontend.c:3093 drivers/media/dvb-core/dvb_frontend.c:141 drivers/media/dvb-core/dvb_frontend.c:166)
>> [  141.526957][   T48]  au0828_dvb_register (drivers/media/usb/au0828/au0828-dvb.c:518 drivers/media/usb/au0828/au0828-dvb.c:634)
>> [  141.527469][   T48]  au0828_usb_probe (drivers/media/usb/au0828/au0828-core.c:733)
>> [  141.527952][   T48]  usb_probe_interface (drivers/usb/core/driver.c:396)
>> [  141.528455][   T48]  really_probe (drivers/base/dd.c:? drivers/base/dd.c:709)
>> [  141.528908][   T48]  __driver_probe_device (drivers/base/dd.c:871)
>> [  141.529426][   T48]  driver_probe_device (drivers/base/dd.c:901)
>> [  141.529932][   T48]  __device_attach_driver (drivers/base/dd.c:1029)
>> [  141.530459][   T48]  bus_for_each_drv (drivers/base/bus.c:500)
>> [  141.530949][   T48]  __device_attach (drivers/base/dd.c:1101)
>> [  141.531419][   T48]  device_initial_probe (drivers/base/dd.c:1156)
>> [  141.531923][   T48]  bus_probe_device (drivers/base/bus.c:613)
>> [  141.532404][   T48]  device_add (drivers/base/core.c:3706)
>> [  141.532840][   T48]  usb_set_configuration (drivers/usb/core/message.c:2268)
>> [  141.533373][   T48]  usb_generic_driver_probe (drivers/usb/core/generic.c:250)
>> [  141.533907][   T48]  usb_probe_device (drivers/usb/core/driver.c:291)
>> [  141.534377][   T48]  really_probe (drivers/base/dd.c:? drivers/base/dd.c:709)
>> [  141.534833][   T48]  __driver_probe_device (drivers/base/dd.c:871)
>> [  141.535352][   T48]  driver_probe_device (drivers/base/dd.c:901)
>> [  141.535856][   T48]  __device_attach_driver (drivers/base/dd.c:1029)
>> [  141.536384][   T48]  bus_for_each_drv (drivers/base/bus.c:500)
>> [  141.536869][   T48]  __device_attach (drivers/base/dd.c:1101)
>> [  141.537340][   T48]  device_initial_probe (drivers/base/dd.c:1156)
>> [  141.537839][   T48]  bus_probe_device (drivers/base/bus.c:613)
>> [  141.538320][   T48]  device_add (drivers/base/core.c:3706)
>> [  141.538753][   T48]  usb_new_device (drivers/usb/core/hub.c:2695)
>> [  141.539226][   T48]  hub_event (drivers/usb/core/hub.c:5567 drivers/usb/core/hub.c:5707 drivers/usb/core/hub.c:5871 drivers/usb/core/hub.c:5953)
>> [  141.539672][   T48]  process_scheduled_works (kernel/workqueue.c:3314 kernel/workqueue.c:3397)
>> [  141.540205][   T48]  worker_thread (kernel/workqueue.c:3478)
>> [  141.540666][   T48]  kthread (kernel/kthread.c:436)
>> [  141.541069][   T48]  ret_from_fork (arch/x86/kernel/process.c:158)
>> [  141.541524][   T48]  ret_from_fork_asm (arch/x86/entry/entry_64.S:245)
>> [  141.541999][   T48]
>> [  141.542236][   T48] The buggy address belongs to the object at ffff888171d4a000
>> [  141.542236][   T48]  which belongs to the cache kmalloc-4k of size 4096
>> [  141.543602][   T48] The buggy address is located 280 bytes inside of
>> [  141.543602][   T48]  freed 4096-byte region [ffff888171d4a000, ffff888171d4b000)



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [BUG] KASAN: slab-use-after-free in au0828_dvb_register
  2026-05-29 19:22   ` [BUG] " Shuangpeng
@ 2026-06-01  1:18     ` Pei Xiao
  2026-06-01  3:38     ` Pei Xiao
  1 sibling, 0 replies; 8+ messages in thread
From: Pei Xiao @ 2026-06-01  1:18 UTC (permalink / raw)
  To: Shuangpeng, xiaopeitux
  Cc: brad, hverkuil+cisco, linux-kernel, linux-media, mchehab, mingo, tglx



在 2026/5/30 03:22, Shuangpeng 写道:
>
>> On May 29, 2026, at 04:30, xiaopeitux@foxmail.com wrote:
>>
>> From: Pei Xiao <xiaopei01@kylinos.cn>
>>
>>> Hi Kernel Maintainers,
>>>
>>> We hit the following KASAN report while testing current upstream kernel:
>>>
>>> KASAN: slab-use-after-free in au0828_dvb_register
>>>
>>> on commit: e8c2f9fdadee7cbc75134dc463c1e0d856d6e5c7 (May 25 2026)
>>>
>>> The reproducer and .config files are here.
>>> https://gist.github.com/shuangpengbai/c31163f8ef234ba4fe85038c2f97f9cc
>>>
>>> I’m happy to test debug patches or provide additional information.
>>>
>>> Reported-by: Shuangpeng Bai <shuangpeng.kernel@gmail.com>
>> Can you help post all the crash logs? 
>> Does the kernel log have this print: 
>> "The frontend of your DVB/ATSC card isn't supported yet." 
> I did not see this message in log.
>
>
>> Please help post all the logs, thank you!
> Thank you for taking a look. All terminal outputs after running the reproducer:
>
> [   64.807294][   T42] usb 3-1: new high-speed USB device number 2 using dummy_hcd
> [   64.958989][   T42] usb 3-1: New USB device found, idVendor=0fe9, idProduct=d620, bcdDevice= 1.00
> [   64.961560][   T42] usb 3-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
> [   65.351442][   T42] au0828: i2c bus registered
> [   65.634777][   T42] au8522 1-0047: creating new instance
> [   65.655406][   T42] DVB: Unable to find symbol xc5000_attach()
> [   65.656022][   T42] dvbdev: DVB: registering new adapter (au0828)
> [   65.656632][   T42] au0828: dvb_register_frontend failed (errno = -12)
Why print  dvb_register_frontend failed (errno = -12)
        fe->frontend_priv = kzalloc_obj(struct dvb_frontend_private);
        if (!fe->frontend_priv) {
                mutex_unlock(&frontend_mutex);
                return -ENOMEM;
        }

-12 is out of memory,  very strange
> [   65.658957][   T42] au8522 1-0047: destroying instance
> [   65.659499][   T42] ==================================================================
> [   65.660261][   T42] BUG: KASAN: slab-use-after-free in au0828_dvb_register+0x1280/0x15f0
> [   65.661023][   T42] Read of size 8 at addr ffff8881685f4118 by task kworker/1:1/42
> [   65.661742][   T42]
> [   65.661973][   T42] CPU: 1 UID: 0 PID: 42 Comm: kworker/1:1 Not tainted 7.1.0-rc5-00006-ge8c2f9fdadee #16 PREEMPT(
> [   65.661978][   T42] Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debia4
> [   65.661981][   T42] Workqueue: usb_hub_wq hub_event
> [   65.661988][   T42] Call Trace:
> [   65.661991][   T42]  <TASK>
> [   65.661993][   T42]  dump_stack_lvl+0x26/0x80
> [   65.661999][   T42]  print_report+0x16a/0x5d0
> [   65.662013][   T42]  kasan_report+0xc3/0x100
> [   65.662019][   T42]  au0828_dvb_register+0x1280/0x15f0
> [   65.662026][   T42]  au0828_usb_probe+0x353/0x4b0
> [   65.662029][   T42]  usb_probe_interface+0x4aa/0xa40
> [   65.662034][   T42]  really_probe+0x259/0x9a0
> [   65.662041][   T42]  __driver_probe_device+0x18b/0x370
> [   65.662045][   T42]  driver_probe_device+0x4b/0x1e0
> [   65.662049][   T42]  __device_attach_driver+0x1d0/0x2f0
> [   65.662055][   T42]  bus_for_each_drv+0x22a/0x260
> [   65.663294][   T42]  __device_attach+0x25a/0x480
> [   65.663321][   T42]  device_initial_probe+0x68/0xa0
> [   65.663324][   T42]  bus_probe_device+0x10a/0x1d0
> [   65.663328][   T42]  device_add+0x56b/0x9c0
> [   65.663332][   T42]  usb_set_configuration+0x1775/0x1d80
> [   65.663337][   T42]  usb_generic_driver_probe+0x61/0xf0
> [   65.663343][   T42]  usb_probe_device+0xd3/0x2a0
> [   65.663346][   T42]  really_probe+0x259/0x9a0
> [   65.663350][   T42]  __driver_probe_device+0x18b/0x370
> [   65.663354][   T42]  driver_probe_device+0x4b/0x1e0
> [   65.663357][   T42]  __device_attach_driver+0x1d0/0x2f0
> [   65.663363][   T42]  bus_for_each_drv+0x22a/0x260
> [   65.663381][   T42]  __device_attach+0x25a/0x480
> [   65.663403][   T42]  device_initial_probe+0x68/0xa0
> [   65.663405][   T42]  bus_probe_device+0x10a/0x1d0
> [   65.663409][   T42]  device_add+0x56b/0x9c0
> [   65.663412][   T42]  usb_new_device+0xbdd/0x1830
> [   65.663423][   T42]  hub_event+0x2358/0x4090
> [   65.663443][   T42]  process_scheduled_works+0x73d/0xed0
> [   65.663451][   T42]  worker_thread+0x7d6/0xb60
> [   65.663459][   T42]  kthread+0x322/0x410
> [   65.663470][   T42]  ret_from_fork+0x285/0x750
> [   65.663485][   T42]  ret_from_fork_asm+0x1a/0x30
> [   65.663491][   T42]  </TASK>
> [   65.663493][   T42]
> [   65.702422][   T42] Freed by task 42 on cpu 1 at 65.659497s:
> [   65.702994][   T42]  kasan_save_track+0x2e/0x90
> [   65.703471][   T42]  kasan_save_free_info+0x3c/0x50
> [   65.703965][   T42]  __kasan_slab_free+0x36/0x60
> [   65.704450][   T42]  kfree+0x154/0x450
> [   65.704839][   T42]  au8522_release_state+0x1b6/0x210
> [   65.705364][   T42]  dvb_frontend_put+0x12a/0x170
> [   65.705848][   T42]  au0828_dvb_register+0xfd9/0x15f0
> [   65.706373][   T42]  au0828_usb_probe+0x353/0x4b0
> [   65.706854][   T42]  usb_probe_interface+0x4aa/0xa40
> [   65.707373][   T42]  really_probe+0x259/0x9a0
> [   65.707822][   T42]  __driver_probe_device+0x18b/0x370
> [   65.708347][   T42]  driver_probe_device+0x4b/0x1e0
> [   65.708845][   T42]  __device_attach_driver+0x1d0/0x2f0
> [   65.709383][   T42]  bus_for_each_drv+0x22a/0x260
> [   65.709864][   T42]  __device_attach+0x25a/0x480
> [   65.710339][   T42]  device_initial_probe+0x68/0xa0
> [   65.710836][   T42]  bus_probe_device+0x10a/0x1d0
> [   65.711323][   T42]  device_add+0x56b/0x9c0
> [   65.711750][   T42]  usb_set_configuration+0x1775/0x1d80
> [   65.712294][   T42]  usb_generic_driver_probe+0x61/0xf0
> [   65.712822][   T42]  usb_probe_device+0xd3/0x2a0
> [   65.713305][   T42]  really_probe+0x259/0x9a0
> [   65.713752][   T42]  __driver_probe_device+0x18b/0x370
> [   65.714282][   T42]  driver_probe_device+0x4b/0x1e0
> [   65.714779][   T42]  __device_attach_driver+0x1d0/0x2f0
> [   65.715313][   T42]  bus_for_each_drv+0x22a/0x260
> [   65.715794][   T42]  __device_attach+0x25a/0x480
> [   65.716271][   T42]  device_initial_probe+0x68/0xa0
> [   65.716767][   T42]  bus_probe_device+0x10a/0x1d0
> [   65.717262][   T42]  device_add+0x56b/0x9c0
> [   65.717690][   T42]  usb_new_device+0xbdd/0x1830
> [   65.717869][    C0] clocksource: Watchdog remote CPU 1 read timed out
> [   65.718172][   T42]  hub_event+0x2358/0x4090
> [   65.718177][   T42]  process_scheduled_works+0x73d/0xed0
> [   65.718180][   T42]  worker_thread+0x7d6/0xb60
> [   65.718183][   T42]  kthread+0x322/0x410
> [   65.718187][   T42]  ret_from_fork+0x285/0x750
> [   65.718189][   T42]  ret_from_fork_asm+0x1a/0x30
> [   65.718192][   T42]
> [   65.718194][   T42] The buggy address belongs to the object at ffff8881685f4000
> [   65.718194][   T42]  which belongs to the cache kmalloc-4k of size 4096
> [   65.718197][   T42] The buggy address is located 280 bytes inside of
> [   65.718197][   T42]  freed 4096-byte region [ffff8881685f4000, ffff8881685f5000)
> [   65.718200][   T42]
> [   65.718201][   T42] The buggy address belongs to the physical page:
> [   65.718204][   T42] page: refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x1685f0
> [   65.718209][   T42] head: order:3 mapcount:0 entire_mapcount:0 nr_pages_mapped:0 pincount:0
> [   65.718212][   T42] flags: 0x17ff00000000040(head|node=0|zone=2|lastcpupid=0x7ff)
> [   65.729357][   T42] page_type: f5(slab)
> [   65.729757][   T42] raw: 017ff00000000040 ffff888100042140 dead000000000100 dead000000000122
> [   65.730603][   T42] raw: 0000000000000000 0000000800040004 00000000f5000000 0000000000000000
> [   65.731450][   T42] head: 017ff00000000040 ffff888100042140 dead000000000100 dead000000000122
> [   65.732301][   T42] head: 0000000000000000 0000000800040004 00000000f5000000 0000000000000000
> [   65.733211][   T42] head: 017ff00000000003 fffffffffffffe01 00000000ffffffff 00000000ffffffff
> [   65.734064][   T42] head: ffffffffffffffff 0000000000000000 00000000ffffffff 0000000000000008
> [   65.734922][   T42] page dumped because: kasan: bad access detected
> [   65.735562][   T42] page_owner tracks the page as allocated
> [   65.736133][   T42] page last allocated via order 3, migratetype Unmovable, gfp_mask 0xd20c0(__GFP_IO|__GFP_FS|__G2
> [   65.738177][   T42]  post_alloc_hook+0x152/0x180
> [   65.738654][   T42]  get_page_from_freelist+0x3996/0x3b50
> [   65.739207][   T42]  __alloc_frozen_pages_noprof+0x243/0x750
> [   65.739783][   T42]  allocate_slab+0x76/0x5e0
> [   65.740242][   T42]  refill_objects+0x2e1/0x360
> [   65.740706][   T42]  __pcs_replace_empty_main+0x233/0x440
> [   65.741262][   T42]  __kmalloc_cache_noprof+0x2d0/0x490
> [   65.741791][   T42]  au8522_get_state+0x266/0x4c0
> [   65.742280][   T42]  au8522_attach+0xba/0x2d0
> [   65.742728][   T42]  au0828_dvb_register+0xcc/0x15f0
> [   65.743241][   T42]  au0828_usb_probe+0x353/0x4b0
> [   65.743723][   T42]  usb_probe_interface+0x4aa/0xa40
> [   65.744264][   T42]  really_probe+0x259/0x9a0
> [   65.744713][   T42]  __driver_probe_device+0x18b/0x370
> [   65.745246][   T42]  driver_probe_device+0x4b/0x1e0
> [   65.745745][   T42]  __device_attach_driver+0x1d0/0x2f0
> [   65.746284][   T42] page last free pid 4578 tgid 4578 stack trace:
> [   65.746909][   T42]  __free_frozen_pages+0xb8c/0xcb0
> [   65.747427][   T42]  __slab_free+0x219/0x260
> [   65.747870][   T42]  qlist_free_all+0x33/0x120
> [   65.748339][   T42]  kasan_quarantine_reduce+0x152/0x170
> [   65.748877][   T42]  __kasan_slab_alloc+0x1f/0x60
> [   65.749368][   T42]  kmem_cache_alloc_noprof+0x1f0/0x480
> [   65.749908][   T42]  do_getname+0x2a/0x1c0
> [   65.750337][   T42]  do_sys_openat2+0x99/0x190
> [   65.750798][   T42]  __x64_sys_openat+0x20b/0x260
> [   65.751287][   T42]  do_syscall_64+0x125/0x590
> [   65.751744][   T42]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
> [   65.752334][   T42]
> [   65.752572][   T42] Memory state around the buggy address:
> [   65.753132][   T42]  ffff8881685f4000: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
> [   65.753918][   T42]  ffff8881685f4080: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
> [   65.754712][   T42] >ffff8881685f4100: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
> [   65.755504][   T42]                             ^
> [   65.755985][   T42]  ffff8881685f4180: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
> [   65.756775][   T42]  ffff8881685f4200: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
> [   65.757575][   T42] ==================================================================
> [   65.758570][   T42] Kernel panic - not syncing: KASAN: panic_on_warn set ...
> [   65.759306][   T42] CPU: 1 UID: 0 PID: 42 Comm: kworker/1:1 Not tainted 7.1.0-rc5-00006-ge8c2f9fdadee #16 PREEMPT(
> [   65.760402][   T42] Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debia4
> [   65.761615][   T42] Workqueue: usb_hub_wq hub_event
> [   65.762263][   T42] Call Trace:
> [   65.762658][   T42]  <TASK>
> [   65.762956][   T42]  dump_stack_lvl+0x26/0x80
> [   65.763420][   T42]  vpanic+0x37d/0x710
> [   65.764686][   T42]  panic+0x9f/0xa0
> [   65.767120][   T42]  check_panic_on_warn+0x58/0x70
> [   65.768155][   T42]  end_report+0x44/0xe0
> [   65.769116][   T42]  kasan_report+0xd4/0x100
> [   65.770092][   T42]  au0828_dvb_register+0x1280/0x15f0
> [   65.771097][   T42]  au0828_usb_probe+0x353/0x4b0
> [   65.771586][   T42]  usb_probe_interface+0x4aa/0xa40
> [   65.772089][   T42]  really_probe+0x259/0x9a0
> [   65.772549][   T42]  __driver_probe_device+0x18b/0x370
> [   65.773069][   T42]  driver_probe_device+0x4b/0x1e0
> [   65.773576][   T42]  __device_attach_driver+0x1d0/0x2f0
> [   65.774692][   T42]  bus_for_each_drv+0x22a/0x260
> [   65.777453][   T42]  __device_attach+0x25a/0x480
> [   65.780818][   T42]  device_initial_probe+0x68/0xa0
> [   65.781322][   T42]  bus_probe_device+0x10a/0x1d0
> [   65.781800][   T42]  device_add+0x56b/0x9c0
> [   65.782284][   T42]  usb_set_configuration+0x1775/0x1d80
> [   65.782822][   T42]  usb_generic_driver_probe+0x61/0xf0
> [   65.783361][   T42]  usb_probe_device+0xd3/0x2a0
> [   65.783832][   T42]  really_probe+0x259/0x9a0
> [   65.784286][   T42]  __driver_probe_device+0x18b/0x370
> [   65.784804][   T42]  driver_probe_device+0x4b/0x1e0
> [   65.785304][   T42]  __device_attach_driver+0x1d0/0x2f0
> [   65.786416][   T42]  bus_for_each_drv+0x22a/0x260
> [   65.789198][   T42]  __device_attach+0x25a/0x480
> [   65.792606][   T42]  device_initial_probe+0x68/0xa0
> [   65.793101][   T42]  bus_probe_device+0x10a/0x1d0
> [   65.793602][   T42]  device_add+0x56b/0x9c0
> [   65.794028][   T42]  usb_new_device+0xbdd/0x1830
> [   65.795025][   T42]  hub_event+0x2358/0x4090
> [   65.797580][   T42]  process_scheduled_works+0x73d/0xed0
> [   65.798124][   T42]  worker_thread+0x7d6/0xb60
> [   65.799085][   T42]  kthread+0x322/0x410
> [   65.800465][   T42]  ret_from_fork+0x285/0x750
> [   65.802356][   T42]  ret_from_fork_asm+0x1a/0x30
> [   65.802830][   T42]  </TASK>
> [   65.803886][   T42] Kernel Offset: disabled
> [   65.804329][   T42] ---[ end Kernel panic - not syncing: KASAN: panic_on_warn set ... ]—
>
>>>
>>> [  141.481576][   T48] ==================================================================
>>> [  141.482348][   T48] BUG: KASAN: slab-use-after-free in au0828_dvb_register (drivers/media/usb/au0828/au0828-dvb.c:636)
>>> [  141.483148][   T48] Read of size 8 at addr ffff888171d4a118 by task kworker/1:1/48
>>> [  141.483903][   T48]
>>> [  141.484144][   T48] Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.34
>>> [  141.484148][   T48] Workqueue: usb_hub_wq hub_event
>>> [  141.484154][   T48] Call Trace:
>>> [  141.484157][   T48]  <TASK>
>>> [  141.484159][   T48]  dump_stack_lvl (lib/dump_stack.c:94 lib/dump_stack.c:120)
>>> [  141.484164][   T48]  print_report (mm/kasan/report.c:378 mm/kasan/report.c:482)
>>> [  141.484177][   T48]  kasan_report (mm/kasan/report.c:595)
>>> [  141.484183][   T48]  au0828_dvb_register (drivers/media/usb/au0828/au0828-dvb.c:636)
>>> [  141.484190][   T48]  au0828_usb_probe (drivers/media/usb/au0828/au0828-core.c:733)
>>> [  141.484193][   T48]  usb_probe_interface (drivers/usb/core/driver.c:396)
>>> [  141.484198][   T48]  really_probe (drivers/base/dd.c:? drivers/base/dd.c:709)
>>> [  141.484204][   T48]  __driver_probe_device (drivers/base/dd.c:871)
>>> [  141.484207][   T48]  driver_probe_device (drivers/base/dd.c:901)
>>> [  141.484211][   T48]  __device_attach_driver (drivers/base/dd.c:1029)
>>> [  141.484217][   T48]  bus_for_each_drv (drivers/base/bus.c:500)
>>> [  141.484264][   T48]  __device_attach (drivers/base/dd.c:1101)
>>> [  141.484289][   T48]  device_initial_probe (drivers/base/dd.c:1156)
>>> [  141.484292][   T48]  bus_probe_device (drivers/base/bus.c:613)
>>> [  141.484296][   T48]  device_add (drivers/base/core.c:3706)
>>> [  141.484299][   T48]  usb_set_configuration (drivers/usb/core/message.c:2268)
>>> [  141.484303][   T48]  usb_generic_driver_probe (drivers/usb/core/generic.c:250)
>>> [  141.484308][   T48]  usb_probe_device (drivers/usb/core/driver.c:291)
>>> [  141.484311][   T48]  really_probe (drivers/base/dd.c:? drivers/base/dd.c:709)
>>> [  141.484315][   T48]  __driver_probe_device (drivers/base/dd.c:871)
>>> [  141.484318][   T48]  driver_probe_device (drivers/base/dd.c:901)
>>> [  141.484321][   T48]  __device_attach_driver (drivers/base/dd.c:1029)
>>> [  141.484328][   T48]  bus_for_each_drv (drivers/base/bus.c:500)
>>> [  141.484346][   T48]  __device_attach (drivers/base/dd.c:1101)
>>> [  141.484367][   T48]  device_initial_probe (drivers/base/dd.c:1156)
>>> [  141.484370][   T48]  bus_probe_device (drivers/base/bus.c:613)
>>> [  141.484374][   T48]  device_add (drivers/base/core.c:3706)
>>> [  141.484376][   T48]  usb_new_device (drivers/usb/core/hub.c:2695)
>>> [  141.484386][   T48]  hub_event (drivers/usb/core/hub.c:5567 drivers/usb/core/hub.c:5707 drivers/usb/core/hub.c:5871 drivers/usb/core/hub.c:5953)
>>> [  141.484406][   T48]  process_scheduled_works (kernel/workqueue.c:3314 kernel/workqueue.c:3397)
>>> [  141.484412][   T48]  worker_thread (kernel/workqueue.c:3478)
>>> [  141.484420][   T48]  kthread (kernel/kthread.c:436)
>>> [  141.484431][   T48]  ret_from_fork (arch/x86/kernel/process.c:158)
>>> [  141.484445][   T48]  ret_from_fork_asm (arch/x86/entry/entry_64.S:245)
>>> [  141.484450][   T48]  </TASK>
>>> [  141.484451][   T48]
>>> [  141.523531][   T48] Freed by task 48 on cpu 1 at 141.481575s:
>>> [  141.524120][   T48]  kasan_save_track (mm/kasan/common.c:57 mm/kasan/common.c:78)
>>> [  141.524594][   T48]  kasan_save_free_info (mm/kasan/generic.c:584)
>>> [  141.525089][   T48]  __kasan_slab_free (mm/kasan/common.c:253 mm/kasan/common.c:285)
>>> [  141.525570][   T48]  kfree (./include/linux/kasan.h:235 mm/slub.c:2689 mm/slub.c:6251 mm/slub.c:6566)
>>> [  141.525957][   T48]  au8522_release_state (drivers/media/dvb-frontends/au8522_common.c:124)
>>> [  141.526467][   T48]  dvb_frontend_put (drivers/media/dvb-core/dvb_frontend.c:3093 drivers/media/dvb-core/dvb_frontend.c:141 drivers/media/dvb-core/dvb_frontend.c:166)
>>> [  141.526957][   T48]  au0828_dvb_register (drivers/media/usb/au0828/au0828-dvb.c:518 drivers/media/usb/au0828/au0828-dvb.c:634)
>>> [  141.527469][   T48]  au0828_usb_probe (drivers/media/usb/au0828/au0828-core.c:733)
>>> [  141.527952][   T48]  usb_probe_interface (drivers/usb/core/driver.c:396)
>>> [  141.528455][   T48]  really_probe (drivers/base/dd.c:? drivers/base/dd.c:709)
>>> [  141.528908][   T48]  __driver_probe_device (drivers/base/dd.c:871)
>>> [  141.529426][   T48]  driver_probe_device (drivers/base/dd.c:901)
>>> [  141.529932][   T48]  __device_attach_driver (drivers/base/dd.c:1029)
>>> [  141.530459][   T48]  bus_for_each_drv (drivers/base/bus.c:500)
>>> [  141.530949][   T48]  __device_attach (drivers/base/dd.c:1101)
>>> [  141.531419][   T48]  device_initial_probe (drivers/base/dd.c:1156)
>>> [  141.531923][   T48]  bus_probe_device (drivers/base/bus.c:613)
>>> [  141.532404][   T48]  device_add (drivers/base/core.c:3706)
>>> [  141.532840][   T48]  usb_set_configuration (drivers/usb/core/message.c:2268)
>>> [  141.533373][   T48]  usb_generic_driver_probe (drivers/usb/core/generic.c:250)
>>> [  141.533907][   T48]  usb_probe_device (drivers/usb/core/driver.c:291)
>>> [  141.534377][   T48]  really_probe (drivers/base/dd.c:? drivers/base/dd.c:709)
>>> [  141.534833][   T48]  __driver_probe_device (drivers/base/dd.c:871)
>>> [  141.535352][   T48]  driver_probe_device (drivers/base/dd.c:901)
>>> [  141.535856][   T48]  __device_attach_driver (drivers/base/dd.c:1029)
>>> [  141.536384][   T48]  bus_for_each_drv (drivers/base/bus.c:500)
>>> [  141.536869][   T48]  __device_attach (drivers/base/dd.c:1101)
>>> [  141.537340][   T48]  device_initial_probe (drivers/base/dd.c:1156)
>>> [  141.537839][   T48]  bus_probe_device (drivers/base/bus.c:613)
>>> [  141.538320][   T48]  device_add (drivers/base/core.c:3706)
>>> [  141.538753][   T48]  usb_new_device (drivers/usb/core/hub.c:2695)
>>> [  141.539226][   T48]  hub_event (drivers/usb/core/hub.c:5567 drivers/usb/core/hub.c:5707 drivers/usb/core/hub.c:5871 drivers/usb/core/hub.c:5953)
>>> [  141.539672][   T48]  process_scheduled_works (kernel/workqueue.c:3314 kernel/workqueue.c:3397)
>>> [  141.540205][   T48]  worker_thread (kernel/workqueue.c:3478)
>>> [  141.540666][   T48]  kthread (kernel/kthread.c:436)
>>> [  141.541069][   T48]  ret_from_fork (arch/x86/kernel/process.c:158)
>>> [  141.541524][   T48]  ret_from_fork_asm (arch/x86/entry/entry_64.S:245)
>>> [  141.541999][   T48]
>>> [  141.542236][   T48] The buggy address belongs to the object at ffff888171d4a000
>>> [  141.542236][   T48]  which belongs to the cache kmalloc-4k of size 4096
>>> [  141.543602][   T48] The buggy address is located 280 bytes inside of
>>> [  141.543602][   T48]  freed 4096-byte region [ffff888171d4a000, ffff888171d4b000)


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [BUG] KASAN: slab-use-after-free in au0828_dvb_register
  2026-05-29 19:22   ` [BUG] " Shuangpeng
  2026-06-01  1:18     ` Pei Xiao
@ 2026-06-01  3:38     ` Pei Xiao
  2026-06-01 20:35       ` Shuangpeng
  1 sibling, 1 reply; 8+ messages in thread
From: Pei Xiao @ 2026-06-01  3:38 UTC (permalink / raw)
  To: Shuangpeng, xiaopeitux
  Cc: brad, hverkuil+cisco, linux-kernel, linux-media, mchehab, mingo, tglx



在 2026/5/30 03:22, Shuangpeng 写道:
>
>> On May 29, 2026, at 04:30, xiaopeitux@foxmail.com wrote:
>>
>> From: Pei Xiao <xiaopei01@kylinos.cn>
>>
>>> Hi Kernel Maintainers,
>>>
>>> We hit the following KASAN report while testing current upstream kernel:
>>>
>>> KASAN: slab-use-after-free in au0828_dvb_register
>>>
>>> on commit: e8c2f9fdadee7cbc75134dc463c1e0d856d6e5c7 (May 25 2026)
>>>
>>> The reproducer and .config files are here.
>>> https://gist.github.com/shuangpengbai/c31163f8ef234ba4fe85038c2f97f9cc
>>>
>>> I’m happy to test debug patches or provide additional information.
>>>
>>> Reported-by: Shuangpeng Bai <shuangpeng.kernel@gmail.com>
>> Can you help post all the crash logs? 
>> Does the kernel log have this print: 
>> "The frontend of your DVB/ATSC card isn't supported yet." 
> I did not see this message in log.
>
>
>> Please help post all the logs, thank you!
> Thank you for taking a look. All terminal outputs after running the reproducer:
 au0828_usb_probe
         au0828_dvb_register
            dvb_attach(xc5000_attach, dvb->frontend,
            dvb_register  
                   if (dvb->frontend->ops.release)
                        dvb->frontend->ops.release(dvb->frontend);

dvb_register 
    result = dvb_register_frontend(&dvb->adapter, dvb->frontend);
        pr_err("dvb_register_frontend failed (errno = %d)\n",//-12,  no kref_init(&fe->refcount);,fe->frontend_priv is NULL
                       result);
        goto fail_frontend

fail_frontend:
dvb_frontend_detach(dvb->frontend);

dvb_frontend_detach:
    dvb_frontend_put  
        __dvb_frontend_free
            dvb_frontend_invoke_release(fe, fe->ops.release);
 
 
static void dvb_frontend_invoke_release(struct dvb_frontend *fe,
                                        void (*release)(struct dvb_frontend *fe))
{
        if (release) {
                release(fe);
#ifdef CONFIG_MEDIA_ATTACH
                dvb_detach(release);
#endif  
        }
}  

au8522_attach
.release              = au8522_release,
    au8522_release_state
        kfree(state);//have free

How did this problem occur, and is the probability of it occurring high?
so we can remove in au0828_dvb_register function follow lines to fix this UAF bug? 

ret = dvb_register(dev);
        if (ret < 0) {
               // if (dvb->frontend->ops.release)
               //        dvb->frontend->ops.release(dvb->frontend);
               //  dvb->frontend = NULL;
                return ret;
        }
Could you please help test this modified code?
> [   64.807294][   T42] usb 3-1: new high-speed USB device number 2 using dummy_hcd
> [   64.958989][   T42] usb 3-1: New USB device found, idVendor=0fe9, idProduct=d620, bcdDevice= 1.00
> [   64.961560][   T42] usb 3-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
> [   65.351442][   T42] au0828: i2c bus registered
> [   65.634777][   T42] au8522 1-0047: creating new instance
> [   65.655406][   T42] DVB: Unable to find symbol xc5000_attach()
> [   65.656022][   T42] dvbdev: DVB: registering new adapter (au0828)
> [   65.656632][   T42] au0828: dvb_register_frontend failed (errno = -12)
> [   65.658957][   T42] au8522 1-0047: destroying instance
> [   65.659499][   T42] ==================================================================
> [   65.660261][   T42] BUG: KASAN: slab-use-after-free in au0828_dvb_register+0x1280/0x15f0
> [   65.661023][   T42] Read of size 8 at addr ffff8881685f4118 by task kworker/1:1/42
> [   65.661742][   T42]
> [   65.661973][   T42] CPU: 1 UID: 0 PID: 42 Comm: kworker/1:1 Not tainted 7.1.0-rc5-00006-ge8c2f9fdadee #16 PREEMPT(
> [   65.661978][   T42] Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debia4
> [   65.661981][   T42] Workqueue: usb_hub_wq hub_event
> [   65.661988][   T42] Call Trace:
> [   65.661991][   T42]  <TASK>
> [   65.661993][   T42]  dump_stack_lvl+0x26/0x80
> [   65.661999][   T42]  print_report+0x16a/0x5d0
> [   65.662013][   T42]  kasan_report+0xc3/0x100
> [   65.662019][   T42]  au0828_dvb_register+0x1280/0x15f0
> [   65.662026][   T42]  au0828_usb_probe+0x353/0x4b0
> [   65.662029][   T42]  usb_probe_interface+0x4aa/0xa40
> [   65.662034][   T42]  really_probe+0x259/0x9a0
> [   65.662041][   T42]  __driver_probe_device+0x18b/0x370
> [   65.662045][   T42]  driver_probe_device+0x4b/0x1e0
> [   65.662049][   T42]  __device_attach_driver+0x1d0/0x2f0
> [   65.662055][   T42]  bus_for_each_drv+0x22a/0x260
> [   65.663294][   T42]  __device_attach+0x25a/0x480
> [   65.663321][   T42]  device_initial_probe+0x68/0xa0
> [   65.663324][   T42]  bus_probe_device+0x10a/0x1d0
> [   65.663328][   T42]  device_add+0x56b/0x9c0
> [   65.663332][   T42]  usb_set_configuration+0x1775/0x1d80
> [   65.663337][   T42]  usb_generic_driver_probe+0x61/0xf0
> [   65.663343][   T42]  usb_probe_device+0xd3/0x2a0
> [   65.663346][   T42]  really_probe+0x259/0x9a0
> [   65.663350][   T42]  __driver_probe_device+0x18b/0x370
> [   65.663354][   T42]  driver_probe_device+0x4b/0x1e0
> [   65.663357][   T42]  __device_attach_driver+0x1d0/0x2f0
> [   65.663363][   T42]  bus_for_each_drv+0x22a/0x260
> [   65.663381][   T42]  __device_attach+0x25a/0x480
> [   65.663403][   T42]  device_initial_probe+0x68/0xa0
> [   65.663405][   T42]  bus_probe_device+0x10a/0x1d0
> [   65.663409][   T42]  device_add+0x56b/0x9c0
> [   65.663412][   T42]  usb_new_device+0xbdd/0x1830
> [   65.663423][   T42]  hub_event+0x2358/0x4090
> [   65.663443][   T42]  process_scheduled_works+0x73d/0xed0
> [   65.663451][   T42]  worker_thread+0x7d6/0xb60
> [   65.663459][   T42]  kthread+0x322/0x410
> [   65.663470][   T42]  ret_from_fork+0x285/0x750
> [   65.663485][   T42]  ret_from_fork_asm+0x1a/0x30
> [   65.663491][   T42]  </TASK>
> [   65.663493][   T42]
> [   65.702422][   T42] Freed by task 42 on cpu 1 at 65.659497s:
> [   65.702994][   T42]  kasan_save_track+0x2e/0x90
> [   65.703471][   T42]  kasan_save_free_info+0x3c/0x50
> [   65.703965][   T42]  __kasan_slab_free+0x36/0x60
> [   65.704450][   T42]  kfree+0x154/0x450
> [   65.704839][   T42]  au8522_release_state+0x1b6/0x210
> [   65.705364][   T42]  dvb_frontend_put+0x12a/0x170
> [   65.705848][   T42]  au0828_dvb_register+0xfd9/0x15f0
> [   65.706373][   T42]  au0828_usb_probe+0x353/0x4b0
> [   65.706854][   T42]  usb_probe_interface+0x4aa/0xa40
> [   65.707373][   T42]  really_probe+0x259/0x9a0
> [   65.707822][   T42]  __driver_probe_device+0x18b/0x370
> [   65.708347][   T42]  driver_probe_device+0x4b/0x1e0
> [   65.708845][   T42]  __device_attach_driver+0x1d0/0x2f0
> [   65.709383][   T42]  bus_for_each_drv+0x22a/0x260
> [   65.709864][   T42]  __device_attach+0x25a/0x480
> [   65.710339][   T42]  device_initial_probe+0x68/0xa0
> [   65.710836][   T42]  bus_probe_device+0x10a/0x1d0
> [   65.711323][   T42]  device_add+0x56b/0x9c0
> [   65.711750][   T42]  usb_set_configuration+0x1775/0x1d80
> [   65.712294][   T42]  usb_generic_driver_probe+0x61/0xf0
> [   65.712822][   T42]  usb_probe_device+0xd3/0x2a0
> [   65.713305][   T42]  really_probe+0x259/0x9a0
> [   65.713752][   T42]  __driver_probe_device+0x18b/0x370
> [   65.714282][   T42]  driver_probe_device+0x4b/0x1e0
> [   65.714779][   T42]  __device_attach_driver+0x1d0/0x2f0
> [   65.715313][   T42]  bus_for_each_drv+0x22a/0x260
> [   65.715794][   T42]  __device_attach+0x25a/0x480
> [   65.716271][   T42]  device_initial_probe+0x68/0xa0
> [   65.716767][   T42]  bus_probe_device+0x10a/0x1d0
> [   65.717262][   T42]  device_add+0x56b/0x9c0
> [   65.717690][   T42]  usb_new_device+0xbdd/0x1830
> [   65.717869][    C0] clocksource: Watchdog remote CPU 1 read timed out
> [   65.718172][   T42]  hub_event+0x2358/0x4090
> [   65.718177][   T42]  process_scheduled_works+0x73d/0xed0
> [   65.718180][   T42]  worker_thread+0x7d6/0xb60
> [   65.718183][   T42]  kthread+0x322/0x410
> [   65.718187][   T42]  ret_from_fork+0x285/0x750
> [   65.718189][   T42]  ret_from_fork_asm+0x1a/0x30
> [   65.718192][   T42]
> [   65.718194][   T42] The buggy address belongs to the object at ffff8881685f4000
> [   65.718194][   T42]  which belongs to the cache kmalloc-4k of size 4096
> [   65.718197][   T42] The buggy address is located 280 bytes inside of
> [   65.718197][   T42]  freed 4096-byte region [ffff8881685f4000, ffff8881685f5000)
> [   65.718200][   T42]
> [   65.718201][   T42] The buggy address belongs to the physical page:
> [   65.718204][   T42] page: refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x1685f0
> [   65.718209][   T42] head: order:3 mapcount:0 entire_mapcount:0 nr_pages_mapped:0 pincount:0
> [   65.718212][   T42] flags: 0x17ff00000000040(head|node=0|zone=2|lastcpupid=0x7ff)
> [   65.729357][   T42] page_type: f5(slab)
> [   65.729757][   T42] raw: 017ff00000000040 ffff888100042140 dead000000000100 dead000000000122
> [   65.730603][   T42] raw: 0000000000000000 0000000800040004 00000000f5000000 0000000000000000
> [   65.731450][   T42] head: 017ff00000000040 ffff888100042140 dead000000000100 dead000000000122
> [   65.732301][   T42] head: 0000000000000000 0000000800040004 00000000f5000000 0000000000000000
> [   65.733211][   T42] head: 017ff00000000003 fffffffffffffe01 00000000ffffffff 00000000ffffffff
> [   65.734064][   T42] head: ffffffffffffffff 0000000000000000 00000000ffffffff 0000000000000008
> [   65.734922][   T42] page dumped because: kasan: bad access detected
> [   65.735562][   T42] page_owner tracks the page as allocated
> [   65.736133][   T42] page last allocated via order 3, migratetype Unmovable, gfp_mask 0xd20c0(__GFP_IO|__GFP_FS|__G2
> [   65.738177][   T42]  post_alloc_hook+0x152/0x180
> [   65.738654][   T42]  get_page_from_freelist+0x3996/0x3b50
> [   65.739207][   T42]  __alloc_frozen_pages_noprof+0x243/0x750
> [   65.739783][   T42]  allocate_slab+0x76/0x5e0
> [   65.740242][   T42]  refill_objects+0x2e1/0x360
> [   65.740706][   T42]  __pcs_replace_empty_main+0x233/0x440
> [   65.741262][   T42]  __kmalloc_cache_noprof+0x2d0/0x490
> [   65.741791][   T42]  au8522_get_state+0x266/0x4c0
> [   65.742280][   T42]  au8522_attach+0xba/0x2d0
> [   65.742728][   T42]  au0828_dvb_register+0xcc/0x15f0
> [   65.743241][   T42]  au0828_usb_probe+0x353/0x4b0
> [   65.743723][   T42]  usb_probe_interface+0x4aa/0xa40
> [   65.744264][   T42]  really_probe+0x259/0x9a0
> [   65.744713][   T42]  __driver_probe_device+0x18b/0x370
> [   65.745246][   T42]  driver_probe_device+0x4b/0x1e0
> [   65.745745][   T42]  __device_attach_driver+0x1d0/0x2f0
> [   65.746284][   T42] page last free pid 4578 tgid 4578 stack trace:
> [   65.746909][   T42]  __free_frozen_pages+0xb8c/0xcb0
> [   65.747427][   T42]  __slab_free+0x219/0x260
> [   65.747870][   T42]  qlist_free_all+0x33/0x120
> [   65.748339][   T42]  kasan_quarantine_reduce+0x152/0x170
> [   65.748877][   T42]  __kasan_slab_alloc+0x1f/0x60
> [   65.749368][   T42]  kmem_cache_alloc_noprof+0x1f0/0x480
> [   65.749908][   T42]  do_getname+0x2a/0x1c0
> [   65.750337][   T42]  do_sys_openat2+0x99/0x190
> [   65.750798][   T42]  __x64_sys_openat+0x20b/0x260
> [   65.751287][   T42]  do_syscall_64+0x125/0x590
> [   65.751744][   T42]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
> [   65.752334][   T42]
> [   65.752572][   T42] Memory state around the buggy address:
> [   65.753132][   T42]  ffff8881685f4000: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
> [   65.753918][   T42]  ffff8881685f4080: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
> [   65.754712][   T42] >ffff8881685f4100: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
> [   65.755504][   T42]                             ^
> [   65.755985][   T42]  ffff8881685f4180: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
> [   65.756775][   T42]  ffff8881685f4200: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
> [   65.757575][   T42] ==================================================================
> [   65.758570][   T42] Kernel panic - not syncing: KASAN: panic_on_warn set ...
> [   65.759306][   T42] CPU: 1 UID: 0 PID: 42 Comm: kworker/1:1 Not tainted 7.1.0-rc5-00006-ge8c2f9fdadee #16 PREEMPT(
> [   65.760402][   T42] Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debia4
> [   65.761615][   T42] Workqueue: usb_hub_wq hub_event
> [   65.762263][   T42] Call Trace:
> [   65.762658][   T42]  <TASK>
> [   65.762956][   T42]  dump_stack_lvl+0x26/0x80
> [   65.763420][   T42]  vpanic+0x37d/0x710
> [   65.764686][   T42]  panic+0x9f/0xa0
> [   65.767120][   T42]  check_panic_on_warn+0x58/0x70
> [   65.768155][   T42]  end_report+0x44/0xe0
> [   65.769116][   T42]  kasan_report+0xd4/0x100
> [   65.770092][   T42]  au0828_dvb_register+0x1280/0x15f0
> [   65.771097][   T42]  au0828_usb_probe+0x353/0x4b0
> [   65.771586][   T42]  usb_probe_interface+0x4aa/0xa40
> [   65.772089][   T42]  really_probe+0x259/0x9a0
> [   65.772549][   T42]  __driver_probe_device+0x18b/0x370
> [   65.773069][   T42]  driver_probe_device+0x4b/0x1e0
> [   65.773576][   T42]  __device_attach_driver+0x1d0/0x2f0
> [   65.774692][   T42]  bus_for_each_drv+0x22a/0x260
> [   65.777453][   T42]  __device_attach+0x25a/0x480
> [   65.780818][   T42]  device_initial_probe+0x68/0xa0
> [   65.781322][   T42]  bus_probe_device+0x10a/0x1d0
> [   65.781800][   T42]  device_add+0x56b/0x9c0
> [   65.782284][   T42]  usb_set_configuration+0x1775/0x1d80
> [   65.782822][   T42]  usb_generic_driver_probe+0x61/0xf0
> [   65.783361][   T42]  usb_probe_device+0xd3/0x2a0
> [   65.783832][   T42]  really_probe+0x259/0x9a0
> [   65.784286][   T42]  __driver_probe_device+0x18b/0x370
> [   65.784804][   T42]  driver_probe_device+0x4b/0x1e0
> [   65.785304][   T42]  __device_attach_driver+0x1d0/0x2f0
> [   65.786416][   T42]  bus_for_each_drv+0x22a/0x260
> [   65.789198][   T42]  __device_attach+0x25a/0x480
> [   65.792606][   T42]  device_initial_probe+0x68/0xa0
> [   65.793101][   T42]  bus_probe_device+0x10a/0x1d0
> [   65.793602][   T42]  device_add+0x56b/0x9c0
> [   65.794028][   T42]  usb_new_device+0xbdd/0x1830
> [   65.795025][   T42]  hub_event+0x2358/0x4090
> [   65.797580][   T42]  process_scheduled_works+0x73d/0xed0
> [   65.798124][   T42]  worker_thread+0x7d6/0xb60
> [   65.799085][   T42]  kthread+0x322/0x410
> [   65.800465][   T42]  ret_from_fork+0x285/0x750
> [   65.802356][   T42]  ret_from_fork_asm+0x1a/0x30
> [   65.802830][   T42]  </TASK>
> [   65.803886][   T42] Kernel Offset: disabled
> [   65.804329][   T42] ---[ end Kernel panic - not syncing: KASAN: panic_on_warn set ... ]—
>
>>>
>>> [  141.481576][   T48] ==================================================================
>>> [  141.482348][   T48] BUG: KASAN: slab-use-after-free in au0828_dvb_register (drivers/media/usb/au0828/au0828-dvb.c:636)
>>> [  141.483148][   T48] Read of size 8 at addr ffff888171d4a118 by task kworker/1:1/48
>>> [  141.483903][   T48]
>>> [  141.484144][   T48] Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.34
>>> [  141.484148][   T48] Workqueue: usb_hub_wq hub_event
>>> [  141.484154][   T48] Call Trace:
>>> [  141.484157][   T48]  <TASK>
>>> [  141.484159][   T48]  dump_stack_lvl (lib/dump_stack.c:94 lib/dump_stack.c:120)
>>> [  141.484164][   T48]  print_report (mm/kasan/report.c:378 mm/kasan/report.c:482)
>>> [  141.484177][   T48]  kasan_report (mm/kasan/report.c:595)
>>> [  141.484183][   T48]  au0828_dvb_register (drivers/media/usb/au0828/au0828-dvb.c:636)
>>> [  141.484190][   T48]  au0828_usb_probe (drivers/media/usb/au0828/au0828-core.c:733)
>>> [  141.484193][   T48]  usb_probe_interface (drivers/usb/core/driver.c:396)
>>> [  141.484198][   T48]  really_probe (drivers/base/dd.c:? drivers/base/dd.c:709)
>>> [  141.484204][   T48]  __driver_probe_device (drivers/base/dd.c:871)
>>> [  141.484207][   T48]  driver_probe_device (drivers/base/dd.c:901)
>>> [  141.484211][   T48]  __device_attach_driver (drivers/base/dd.c:1029)
>>> [  141.484217][   T48]  bus_for_each_drv (drivers/base/bus.c:500)
>>> [  141.484264][   T48]  __device_attach (drivers/base/dd.c:1101)
>>> [  141.484289][   T48]  device_initial_probe (drivers/base/dd.c:1156)
>>> [  141.484292][   T48]  bus_probe_device (drivers/base/bus.c:613)
>>> [  141.484296][   T48]  device_add (drivers/base/core.c:3706)
>>> [  141.484299][   T48]  usb_set_configuration (drivers/usb/core/message.c:2268)
>>> [  141.484303][   T48]  usb_generic_driver_probe (drivers/usb/core/generic.c:250)
>>> [  141.484308][   T48]  usb_probe_device (drivers/usb/core/driver.c:291)
>>> [  141.484311][   T48]  really_probe (drivers/base/dd.c:? drivers/base/dd.c:709)
>>> [  141.484315][   T48]  __driver_probe_device (drivers/base/dd.c:871)
>>> [  141.484318][   T48]  driver_probe_device (drivers/base/dd.c:901)
>>> [  141.484321][   T48]  __device_attach_driver (drivers/base/dd.c:1029)
>>> [  141.484328][   T48]  bus_for_each_drv (drivers/base/bus.c:500)
>>> [  141.484346][   T48]  __device_attach (drivers/base/dd.c:1101)
>>> [  141.484367][   T48]  device_initial_probe (drivers/base/dd.c:1156)
>>> [  141.484370][   T48]  bus_probe_device (drivers/base/bus.c:613)
>>> [  141.484374][   T48]  device_add (drivers/base/core.c:3706)
>>> [  141.484376][   T48]  usb_new_device (drivers/usb/core/hub.c:2695)
>>> [  141.484386][   T48]  hub_event (drivers/usb/core/hub.c:5567 drivers/usb/core/hub.c:5707 drivers/usb/core/hub.c:5871 drivers/usb/core/hub.c:5953)
>>> [  141.484406][   T48]  process_scheduled_works (kernel/workqueue.c:3314 kernel/workqueue.c:3397)
>>> [  141.484412][   T48]  worker_thread (kernel/workqueue.c:3478)
>>> [  141.484420][   T48]  kthread (kernel/kthread.c:436)
>>> [  141.484431][   T48]  ret_from_fork (arch/x86/kernel/process.c:158)
>>> [  141.484445][   T48]  ret_from_fork_asm (arch/x86/entry/entry_64.S:245)
>>> [  141.484450][   T48]  </TASK>
>>> [  141.484451][   T48]
>>> [  141.523531][   T48] Freed by task 48 on cpu 1 at 141.481575s:
>>> [  141.524120][   T48]  kasan_save_track (mm/kasan/common.c:57 mm/kasan/common.c:78)
>>> [  141.524594][   T48]  kasan_save_free_info (mm/kasan/generic.c:584)
>>> [  141.525089][   T48]  __kasan_slab_free (mm/kasan/common.c:253 mm/kasan/common.c:285)
>>> [  141.525570][   T48]  kfree (./include/linux/kasan.h:235 mm/slub.c:2689 mm/slub.c:6251 mm/slub.c:6566)
>>> [  141.525957][   T48]  au8522_release_state (drivers/media/dvb-frontends/au8522_common.c:124)
>>> [  141.526467][   T48]  dvb_frontend_put (drivers/media/dvb-core/dvb_frontend.c:3093 drivers/media/dvb-core/dvb_frontend.c:141 drivers/media/dvb-core/dvb_frontend.c:166)
>>> [  141.526957][   T48]  au0828_dvb_register (drivers/media/usb/au0828/au0828-dvb.c:518 drivers/media/usb/au0828/au0828-dvb.c:634)
>>> [  141.527469][   T48]  au0828_usb_probe (drivers/media/usb/au0828/au0828-core.c:733)
>>> [  141.527952][   T48]  usb_probe_interface (drivers/usb/core/driver.c:396)
>>> [  141.528455][   T48]  really_probe (drivers/base/dd.c:? drivers/base/dd.c:709)
>>> [  141.528908][   T48]  __driver_probe_device (drivers/base/dd.c:871)
>>> [  141.529426][   T48]  driver_probe_device (drivers/base/dd.c:901)
>>> [  141.529932][   T48]  __device_attach_driver (drivers/base/dd.c:1029)
>>> [  141.530459][   T48]  bus_for_each_drv (drivers/base/bus.c:500)
>>> [  141.530949][   T48]  __device_attach (drivers/base/dd.c:1101)
>>> [  141.531419][   T48]  device_initial_probe (drivers/base/dd.c:1156)
>>> [  141.531923][   T48]  bus_probe_device (drivers/base/bus.c:613)
>>> [  141.532404][   T48]  device_add (drivers/base/core.c:3706)
>>> [  141.532840][   T48]  usb_set_configuration (drivers/usb/core/message.c:2268)
>>> [  141.533373][   T48]  usb_generic_driver_probe (drivers/usb/core/generic.c:250)
>>> [  141.533907][   T48]  usb_probe_device (drivers/usb/core/driver.c:291)
>>> [  141.534377][   T48]  really_probe (drivers/base/dd.c:? drivers/base/dd.c:709)
>>> [  141.534833][   T48]  __driver_probe_device (drivers/base/dd.c:871)
>>> [  141.535352][   T48]  driver_probe_device (drivers/base/dd.c:901)
>>> [  141.535856][   T48]  __device_attach_driver (drivers/base/dd.c:1029)
>>> [  141.536384][   T48]  bus_for_each_drv (drivers/base/bus.c:500)
>>> [  141.536869][   T48]  __device_attach (drivers/base/dd.c:1101)
>>> [  141.537340][   T48]  device_initial_probe (drivers/base/dd.c:1156)
>>> [  141.537839][   T48]  bus_probe_device (drivers/base/bus.c:613)
>>> [  141.538320][   T48]  device_add (drivers/base/core.c:3706)
>>> [  141.538753][   T48]  usb_new_device (drivers/usb/core/hub.c:2695)
>>> [  141.539226][   T48]  hub_event (drivers/usb/core/hub.c:5567 drivers/usb/core/hub.c:5707 drivers/usb/core/hub.c:5871 drivers/usb/core/hub.c:5953)
>>> [  141.539672][   T48]  process_scheduled_works (kernel/workqueue.c:3314 kernel/workqueue.c:3397)
>>> [  141.540205][   T48]  worker_thread (kernel/workqueue.c:3478)
>>> [  141.540666][   T48]  kthread (kernel/kthread.c:436)
>>> [  141.541069][   T48]  ret_from_fork (arch/x86/kernel/process.c:158)
>>> [  141.541524][   T48]  ret_from_fork_asm (arch/x86/entry/entry_64.S:245)
>>> [  141.541999][   T48]
>>> [  141.542236][   T48] The buggy address belongs to the object at ffff888171d4a000
>>> [  141.542236][   T48]  which belongs to the cache kmalloc-4k of size 4096
>>> [  141.543602][   T48] The buggy address is located 280 bytes inside of
>>> [  141.543602][   T48]  freed 4096-byte region [ffff888171d4a000, ffff888171d4b000)


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [BUG] KASAN: slab-use-after-free in au0828_dvb_register
  2026-06-01  3:38     ` Pei Xiao
@ 2026-06-01 20:35       ` Shuangpeng
  2026-06-02  2:44         ` Pei Xiao
  0 siblings, 1 reply; 8+ messages in thread
From: Shuangpeng @ 2026-06-01 20:35 UTC (permalink / raw)
  To: Pei Xiao
  Cc: xiaopeitux, brad, hverkuil+cisco, linux-kernel, linux-media,
	mchehab, mingo, tglx



> On May 31, 2026, at 23:38, Pei Xiao <xiaopei01@kylinos.cn> wrote:
> 
> 
> 
> 在 2026/5/30 03:22, Shuangpeng 写道:
>> 
>>> On May 29, 2026, at 04:30, xiaopeitux@foxmail.com wrote:
>>> 
>>> From: Pei Xiao <xiaopei01@kylinos.cn>
>>> 
>>>> Hi Kernel Maintainers,
>>>> 
>>>> We hit the following KASAN report while testing current upstream kernel:
>>>> 
>>>> KASAN: slab-use-after-free in au0828_dvb_register
>>>> 
>>>> on commit: e8c2f9fdadee7cbc75134dc463c1e0d856d6e5c7 (May 25 2026)
>>>> 
>>>> The reproducer and .config files are here.
>>>> https://gist.github.com/shuangpengbai/c31163f8ef234ba4fe85038c2f97f9cc
>>>> 
>>>> I’m happy to test debug patches or provide additional information.
>>>> 
>>>> Reported-by: Shuangpeng Bai <shuangpeng.kernel@gmail.com>
>>> Can you help post all the crash logs? 
>>> Does the kernel log have this print: 
>>> "The frontend of your DVB/ATSC card isn't supported yet." 
>> I did not see this message in log.
>> 
>> 
>>> Please help post all the logs, thank you!
>> Thank you for taking a look. All terminal outputs after running the reproducer:
>  au0828_usb_probe
>          au0828_dvb_register
>             dvb_attach(xc5000_attach, dvb->frontend,
>             dvb_register  
>                    if (dvb->frontend->ops.release)
>                         dvb->frontend->ops.release(dvb->frontend);
> 
> dvb_register 
>     result = dvb_register_frontend(&dvb->adapter, dvb->frontend);
>         pr_err("dvb_register_frontend failed (errno = %d)\n",//-12,  no kref_init(&fe->refcount);,fe->frontend_priv is NULL
>                        result);
>         goto fail_frontend
> 
> fail_frontend:
> dvb_frontend_detach(dvb->frontend);
> 
> dvb_frontend_detach:
>     dvb_frontend_put  
>         __dvb_frontend_free
>             dvb_frontend_invoke_release(fe, fe->ops.release);
>  
>  
> static void dvb_frontend_invoke_release(struct dvb_frontend *fe,
>                                         void (*release)(struct dvb_frontend *fe))
> {
>         if (release) {
>                 release(fe);
> #ifdef CONFIG_MEDIA_ATTACH
>                 dvb_detach(release);
> #endif  
>         }
> }  
> 
> au8522_attach
> .release              = au8522_release,
>     au8522_release_state
>         kfree(state);//have free
> 
> How did this problem occur, and is the probability of it occurring high?

I found this issue during testing kernel with our tool. This bug can be reliably reproduced.

> so we can remove in au0828_dvb_register function follow lines to fix this UAF bug? 
> 
> ret = dvb_register(dev);
>         if (ret < 0) {
>                // if (dvb->frontend->ops.release)
>                //        dvb->frontend->ops.release(dvb->frontend);
>                //  dvb->frontend = NULL;
>                 return ret;
>         }
> Could you please help test this modified code?

Could you please confirm whether the following is the intended change?

I locally tested it by commenting out the three lines in the error path of
au0828_dvb_register():

diff --git a/drivers/media/usb/au0828/au0828-dvb.c b/drivers/media/usb/au0828/au0828-dvb.c
index 31123e6f9fc3..f3d5a2b0de71 100644
--- a/drivers/media/usb/au0828/au0828-dvb.c
+++ b/drivers/media/usb/au0828/au0828-dvb.c
@@ -633,9 +633,9 @@ int au0828_dvb_register(struct au0828_dev *dev)
        /* register everything */
        ret = dvb_register(dev);
        if (ret < 0) {
-               if (dvb->frontend->ops.release)
-                       dvb->frontend->ops.release(dvb->frontend);
-               dvb->frontend = NULL;
+               // if (dvb->frontend->ops.release)
+               //      dvb->frontend->ops.release(dvb->frontend);
+               // dvb->frontend = NULL;
                return ret;
        }

With this change, I reran the reproducer and hit a NULL pointer
dereference:

[ 90.096547][ T10] BUG: kernel NULL pointer dereference, address: 0000000000000000
[ 90.107156][ T10] au0828_dvb_unregister (drivers/media/usb/au0828/au0828-dvb.c:543)
[ 90.107518][ T10] au0828_usb_disconnect (drivers/media/usb/au0828/au0828-core.c:179)
[ 90.107875][ T10] usb_unbind_interface (drivers/usb/core/driver.c:458)
[ 90.108965][ T10] device_release_driver_internal (drivers/base/dd.c:621 drivers/base/dd.c:1352 drivers/base/dd.c:1375)
[ 90.109384][ T10] bus_remove_device (drivers/base/bus.c:657)
[ 90.110494][ T10] device_del (drivers/base/core.c:3895)
[ 90.111787][ T10] usb_disable_device (drivers/usb/core/message.c:1478)
[ 90.112134][ T10] usb_disconnect (drivers/input/misc/yealink.c:421)
[ 90.112460][ T10] hub_event (drivers/usb/core/hub.c:5407 drivers/usb/core/hub.c:5707 drivers/usb/core/hub.c:5871 drivers/usb/core/hub.c:5953)
[ 90.114436][ T10] process_scheduled_works (kernel/workqueue.c:3314 kernel/workqueue.c:3397)
[ 90.114817][ T10] worker_thread (kernel/workqueue.c:3478)
[ 90.115490][ T10] kthread (kernel/kthread.c:436)
[ 90.116448][ T10] ret_from_fork (arch/x86/kernel/process.c:158)
[ 90.117759][ T10] ret_from_fork_asm (arch/x86/entry/entry_64.S:245)

The crash happens in au0828_dvb_unregister() at:
dvb->demux.dmx.remove_frontend(&dvb->demux.dmx, &dvb->fe_mem);

So if this is the intended change, it seems to avoid the original release path,
but it also leaves the device in a partially initialized state and triggers a
NULL pointer dereference during disconnect.

Please let me know if there is a new patch you would like me to test.


>> [   64.807294][   T42] usb 3-1: new high-speed USB device number 2 using dummy_hcd
>> [   64.958989][   T42] usb 3-1: New USB device found, idVendor=0fe9, idProduct=d620, bcdDevice= 1.00
>> [   64.961560][   T42] usb 3-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
>> [   65.351442][   T42] au0828: i2c bus registered
>> [   65.634777][   T42] au8522 1-0047: creating new instance
>> [   65.655406][   T42] DVB: Unable to find symbol xc5000_attach()
>> [   65.656022][   T42] dvbdev: DVB: registering new adapter (au0828)
>> [   65.656632][   T42] au0828: dvb_register_frontend failed (errno = -12)
>> [   65.658957][   T42] au8522 1-0047: destroying instance
>> [   65.659499][   T42] ==================================================================
>> [   65.660261][   T42] BUG: KASAN: slab-use-after-free in au0828_dvb_register+0x1280/0x15f0
>> [   65.661023][   T42] Read of size 8 at addr ffff8881685f4118 by task kworker/1:1/42
>> [   65.661742][   T42]
>> [   65.661973][   T42] CPU: 1 UID: 0 PID: 42 Comm: kworker/1:1 Not tainted 7.1.0-rc5-00006-ge8c2f9fdadee #16 PREEMPT(
>> [   65.661978][   T42] Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debia4
>> [   65.661981][   T42] Workqueue: usb_hub_wq hub_event
>> [   65.661988][   T42] Call Trace:
>> [   65.661991][   T42]  <TASK>
>> [   65.661993][   T42]  dump_stack_lvl+0x26/0x80
>> [   65.661999][   T42]  print_report+0x16a/0x5d0
>> [   65.662013][   T42]  kasan_report+0xc3/0x100
>> [   65.662019][   T42]  au0828_dvb_register+0x1280/0x15f0
>> [   65.662026][   T42]  au0828_usb_probe+0x353/0x4b0
>> [   65.662029][   T42]  usb_probe_interface+0x4aa/0xa40
>> [   65.662034][   T42]  really_probe+0x259/0x9a0
>> [   65.662041][   T42]  __driver_probe_device+0x18b/0x370
>> [   65.662045][   T42]  driver_probe_device+0x4b/0x1e0
>> [   65.662049][   T42]  __device_attach_driver+0x1d0/0x2f0
>> [   65.662055][   T42]  bus_for_each_drv+0x22a/0x260
>> [   65.663294][   T42]  __device_attach+0x25a/0x480
>> [   65.663321][   T42]  device_initial_probe+0x68/0xa0
>> [   65.663324][   T42]  bus_probe_device+0x10a/0x1d0
>> [   65.663328][   T42]  device_add+0x56b/0x9c0
>> [   65.663332][   T42]  usb_set_configuration+0x1775/0x1d80
>> [   65.663337][   T42]  usb_generic_driver_probe+0x61/0xf0
>> [   65.663343][   T42]  usb_probe_device+0xd3/0x2a0
>> [   65.663346][   T42]  really_probe+0x259/0x9a0
>> [   65.663350][   T42]  __driver_probe_device+0x18b/0x370
>> [   65.663354][   T42]  driver_probe_device+0x4b/0x1e0
>> [   65.663357][   T42]  __device_attach_driver+0x1d0/0x2f0
>> [   65.663363][   T42]  bus_for_each_drv+0x22a/0x260
>> [   65.663381][   T42]  __device_attach+0x25a/0x480
>> [   65.663403][   T42]  device_initial_probe+0x68/0xa0
>> [   65.663405][   T42]  bus_probe_device+0x10a/0x1d0
>> [   65.663409][   T42]  device_add+0x56b/0x9c0
>> [   65.663412][   T42]  usb_new_device+0xbdd/0x1830
>> [   65.663423][   T42]  hub_event+0x2358/0x4090
>> [   65.663443][   T42]  process_scheduled_works+0x73d/0xed0
>> [   65.663451][   T42]  worker_thread+0x7d6/0xb60
>> [   65.663459][   T42]  kthread+0x322/0x410
>> [   65.663470][   T42]  ret_from_fork+0x285/0x750
>> [   65.663485][   T42]  ret_from_fork_asm+0x1a/0x30
>> [   65.663491][   T42]  </TASK>
>> [   65.663493][   T42]
>> [   65.702422][   T42] Freed by task 42 on cpu 1 at 65.659497s:
>> [   65.702994][   T42]  kasan_save_track+0x2e/0x90
>> [   65.703471][   T42]  kasan_save_free_info+0x3c/0x50
>> [   65.703965][   T42]  __kasan_slab_free+0x36/0x60
>> [   65.704450][   T42]  kfree+0x154/0x450
>> [   65.704839][   T42]  au8522_release_state+0x1b6/0x210
>> [   65.705364][   T42]  dvb_frontend_put+0x12a/0x170
>> [   65.705848][   T42]  au0828_dvb_register+0xfd9/0x15f0
>> [   65.706373][   T42]  au0828_usb_probe+0x353/0x4b0
>> [   65.706854][   T42]  usb_probe_interface+0x4aa/0xa40
>> [   65.707373][   T42]  really_probe+0x259/0x9a0
>> [   65.707822][   T42]  __driver_probe_device+0x18b/0x370
>> [   65.708347][   T42]  driver_probe_device+0x4b/0x1e0
>> [   65.708845][   T42]  __device_attach_driver+0x1d0/0x2f0
>> [   65.709383][   T42]  bus_for_each_drv+0x22a/0x260
>> [   65.709864][   T42]  __device_attach+0x25a/0x480
>> [   65.710339][   T42]  device_initial_probe+0x68/0xa0
>> [   65.710836][   T42]  bus_probe_device+0x10a/0x1d0
>> [   65.711323][   T42]  device_add+0x56b/0x9c0
>> [   65.711750][   T42]  usb_set_configuration+0x1775/0x1d80
>> [   65.712294][   T42]  usb_generic_driver_probe+0x61/0xf0
>> [   65.712822][   T42]  usb_probe_device+0xd3/0x2a0
>> [   65.713305][   T42]  really_probe+0x259/0x9a0
>> [   65.713752][   T42]  __driver_probe_device+0x18b/0x370
>> [   65.714282][   T42]  driver_probe_device+0x4b/0x1e0
>> [   65.714779][   T42]  __device_attach_driver+0x1d0/0x2f0
>> [   65.715313][   T42]  bus_for_each_drv+0x22a/0x260
>> [   65.715794][   T42]  __device_attach+0x25a/0x480
>> [   65.716271][   T42]  device_initial_probe+0x68/0xa0
>> [   65.716767][   T42]  bus_probe_device+0x10a/0x1d0
>> [   65.717262][   T42]  device_add+0x56b/0x9c0
>> [   65.717690][   T42]  usb_new_device+0xbdd/0x1830
>> [   65.717869][    C0] clocksource: Watchdog remote CPU 1 read timed out
>> [   65.718172][   T42]  hub_event+0x2358/0x4090
>> [   65.718177][   T42]  process_scheduled_works+0x73d/0xed0
>> [   65.718180][   T42]  worker_thread+0x7d6/0xb60
>> [   65.718183][   T42]  kthread+0x322/0x410
>> [   65.718187][   T42]  ret_from_fork+0x285/0x750
>> [   65.718189][   T42]  ret_from_fork_asm+0x1a/0x30
>> [   65.718192][   T42]
>> [   65.718194][   T42] The buggy address belongs to the object at ffff8881685f4000
>> [   65.718194][   T42]  which belongs to the cache kmalloc-4k of size 4096
>> [   65.718197][   T42] The buggy address is located 280 bytes inside of
>> [   65.718197][   T42]  freed 4096-byte region [ffff8881685f4000, ffff8881685f5000)
>> [   65.718200][   T42]
>> [   65.718201][   T42] The buggy address belongs to the physical page:
>> [   65.718204][   T42] page: refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x1685f0
>> [   65.718209][   T42] head: order:3 mapcount:0 entire_mapcount:0 nr_pages_mapped:0 pincount:0
>> [   65.718212][   T42] flags: 0x17ff00000000040(head|node=0|zone=2|lastcpupid=0x7ff)
>> [   65.729357][   T42] page_type: f5(slab)
>> [   65.729757][   T42] raw: 017ff00000000040 ffff888100042140 dead000000000100 dead000000000122
>> [   65.730603][   T42] raw: 0000000000000000 0000000800040004 00000000f5000000 0000000000000000
>> [   65.731450][   T42] head: 017ff00000000040 ffff888100042140 dead000000000100 dead000000000122
>> [   65.732301][   T42] head: 0000000000000000 0000000800040004 00000000f5000000 0000000000000000
>> [   65.733211][   T42] head: 017ff00000000003 fffffffffffffe01 00000000ffffffff 00000000ffffffff
>> [   65.734064][   T42] head: ffffffffffffffff 0000000000000000 00000000ffffffff 0000000000000008
>> [   65.734922][   T42] page dumped because: kasan: bad access detected
>> [   65.735562][   T42] page_owner tracks the page as allocated
>> [   65.736133][   T42] page last allocated via order 3, migratetype Unmovable, gfp_mask 0xd20c0(__GFP_IO|__GFP_FS|__G2
>> [   65.738177][   T42]  post_alloc_hook+0x152/0x180
>> [   65.738654][   T42]  get_page_from_freelist+0x3996/0x3b50
>> [   65.739207][   T42]  __alloc_frozen_pages_noprof+0x243/0x750
>> [   65.739783][   T42]  allocate_slab+0x76/0x5e0
>> [   65.740242][   T42]  refill_objects+0x2e1/0x360
>> [   65.740706][   T42]  __pcs_replace_empty_main+0x233/0x440
>> [   65.741262][   T42]  __kmalloc_cache_noprof+0x2d0/0x490
>> [   65.741791][   T42]  au8522_get_state+0x266/0x4c0
>> [   65.742280][   T42]  au8522_attach+0xba/0x2d0
>> [   65.742728][   T42]  au0828_dvb_register+0xcc/0x15f0
>> [   65.743241][   T42]  au0828_usb_probe+0x353/0x4b0
>> [   65.743723][   T42]  usb_probe_interface+0x4aa/0xa40
>> [   65.744264][   T42]  really_probe+0x259/0x9a0
>> [   65.744713][   T42]  __driver_probe_device+0x18b/0x370
>> [   65.745246][   T42]  driver_probe_device+0x4b/0x1e0
>> [   65.745745][   T42]  __device_attach_driver+0x1d0/0x2f0
>> [   65.746284][   T42] page last free pid 4578 tgid 4578 stack trace:
>> [   65.746909][   T42]  __free_frozen_pages+0xb8c/0xcb0
>> [   65.747427][   T42]  __slab_free+0x219/0x260
>> [   65.747870][   T42]  qlist_free_all+0x33/0x120
>> [   65.748339][   T42]  kasan_quarantine_reduce+0x152/0x170
>> [   65.748877][   T42]  __kasan_slab_alloc+0x1f/0x60
>> [   65.749368][   T42]  kmem_cache_alloc_noprof+0x1f0/0x480
>> [   65.749908][   T42]  do_getname+0x2a/0x1c0
>> [   65.750337][   T42]  do_sys_openat2+0x99/0x190
>> [   65.750798][   T42]  __x64_sys_openat+0x20b/0x260
>> [   65.751287][   T42]  do_syscall_64+0x125/0x590
>> [   65.751744][   T42]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
>> [   65.752334][   T42]
>> [   65.752572][   T42] Memory state around the buggy address:
>> [   65.753132][   T42]  ffff8881685f4000: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>> [   65.753918][   T42]  ffff8881685f4080: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>> [   65.754712][   T42] >ffff8881685f4100: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>> [   65.755504][   T42]                             ^
>> [   65.755985][   T42]  ffff8881685f4180: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>> [   65.756775][   T42]  ffff8881685f4200: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>> [   65.757575][   T42] ==================================================================
>> [   65.758570][   T42] Kernel panic - not syncing: KASAN: panic_on_warn set ...
>> [   65.759306][   T42] CPU: 1 UID: 0 PID: 42 Comm: kworker/1:1 Not tainted 7.1.0-rc5-00006-ge8c2f9fdadee #16 PREEMPT(
>> [   65.760402][   T42] Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debia4
>> [   65.761615][   T42] Workqueue: usb_hub_wq hub_event
>> [   65.762263][   T42] Call Trace:
>> [   65.762658][   T42]  <TASK>
>> [   65.762956][   T42]  dump_stack_lvl+0x26/0x80
>> [   65.763420][   T42]  vpanic+0x37d/0x710
>> [   65.764686][   T42]  panic+0x9f/0xa0
>> [   65.767120][   T42]  check_panic_on_warn+0x58/0x70
>> [   65.768155][   T42]  end_report+0x44/0xe0
>> [   65.769116][   T42]  kasan_report+0xd4/0x100
>> [   65.770092][   T42]  au0828_dvb_register+0x1280/0x15f0
>> [   65.771097][   T42]  au0828_usb_probe+0x353/0x4b0
>> [   65.771586][   T42]  usb_probe_interface+0x4aa/0xa40
>> [   65.772089][   T42]  really_probe+0x259/0x9a0
>> [   65.772549][   T42]  __driver_probe_device+0x18b/0x370
>> [   65.773069][   T42]  driver_probe_device+0x4b/0x1e0
>> [   65.773576][   T42]  __device_attach_driver+0x1d0/0x2f0
>> [   65.774692][   T42]  bus_for_each_drv+0x22a/0x260
>> [   65.777453][   T42]  __device_attach+0x25a/0x480
>> [   65.780818][   T42]  device_initial_probe+0x68/0xa0
>> [   65.781322][   T42]  bus_probe_device+0x10a/0x1d0
>> [   65.781800][   T42]  device_add+0x56b/0x9c0
>> [   65.782284][   T42]  usb_set_configuration+0x1775/0x1d80
>> [   65.782822][   T42]  usb_generic_driver_probe+0x61/0xf0
>> [   65.783361][   T42]  usb_probe_device+0xd3/0x2a0
>> [   65.783832][   T42]  really_probe+0x259/0x9a0
>> [   65.784286][   T42]  __driver_probe_device+0x18b/0x370
>> [   65.784804][   T42]  driver_probe_device+0x4b/0x1e0
>> [   65.785304][   T42]  __device_attach_driver+0x1d0/0x2f0
>> [   65.786416][   T42]  bus_for_each_drv+0x22a/0x260
>> [   65.789198][   T42]  __device_attach+0x25a/0x480
>> [   65.792606][   T42]  device_initial_probe+0x68/0xa0
>> [   65.793101][   T42]  bus_probe_device+0x10a/0x1d0
>> [   65.793602][   T42]  device_add+0x56b/0x9c0
>> [   65.794028][   T42]  usb_new_device+0xbdd/0x1830
>> [   65.795025][   T42]  hub_event+0x2358/0x4090
>> [   65.797580][   T42]  process_scheduled_works+0x73d/0xed0
>> [   65.798124][   T42]  worker_thread+0x7d6/0xb60
>> [   65.799085][   T42]  kthread+0x322/0x410
>> [   65.800465][   T42]  ret_from_fork+0x285/0x750
>> [   65.802356][   T42]  ret_from_fork_asm+0x1a/0x30
>> [   65.802830][   T42]  </TASK>
>> [   65.803886][   T42] Kernel Offset: disabled
>> [   65.804329][   T42] ---[ end Kernel panic - not syncing: KASAN: panic_on_warn set ... ]—
>> 
>>>> 
>>>> [  141.481576][   T48] ==================================================================
>>>> [  141.482348][   T48] BUG: KASAN: slab-use-after-free in au0828_dvb_register (drivers/media/usb/au0828/au0828-dvb.c:636)
>>>> [  141.483148][   T48] Read of size 8 at addr ffff888171d4a118 by task kworker/1:1/48
>>>> [  141.483903][   T48]
>>>> [  141.484144][   T48] Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.34
>>>> [  141.484148][   T48] Workqueue: usb_hub_wq hub_event
>>>> [  141.484154][   T48] Call Trace:
>>>> [  141.484157][   T48]  <TASK>
>>>> [  141.484159][   T48]  dump_stack_lvl (lib/dump_stack.c:94 lib/dump_stack.c:120)
>>>> [  141.484164][   T48]  print_report (mm/kasan/report.c:378 mm/kasan/report.c:482)
>>>> [  141.484177][   T48]  kasan_report (mm/kasan/report.c:595)
>>>> [  141.484183][   T48]  au0828_dvb_register (drivers/media/usb/au0828/au0828-dvb.c:636)
>>>> [  141.484190][   T48]  au0828_usb_probe (drivers/media/usb/au0828/au0828-core.c:733)
>>>> [  141.484193][   T48]  usb_probe_interface (drivers/usb/core/driver.c:396)
>>>> [  141.484198][   T48]  really_probe (drivers/base/dd.c:? drivers/base/dd.c:709)
>>>> [  141.484204][   T48]  __driver_probe_device (drivers/base/dd.c:871)
>>>> [  141.484207][   T48]  driver_probe_device (drivers/base/dd.c:901)
>>>> [  141.484211][   T48]  __device_attach_driver (drivers/base/dd.c:1029)
>>>> [  141.484217][   T48]  bus_for_each_drv (drivers/base/bus.c:500)
>>>> [  141.484264][   T48]  __device_attach (drivers/base/dd.c:1101)
>>>> [  141.484289][   T48]  device_initial_probe (drivers/base/dd.c:1156)
>>>> [  141.484292][   T48]  bus_probe_device (drivers/base/bus.c:613)
>>>> [  141.484296][   T48]  device_add (drivers/base/core.c:3706)
>>>> [  141.484299][   T48]  usb_set_configuration (drivers/usb/core/message.c:2268)
>>>> [  141.484303][   T48]  usb_generic_driver_probe (drivers/usb/core/generic.c:250)
>>>> [  141.484308][   T48]  usb_probe_device (drivers/usb/core/driver.c:291)
>>>> [  141.484311][   T48]  really_probe (drivers/base/dd.c:? drivers/base/dd.c:709)
>>>> [  141.484315][   T48]  __driver_probe_device (drivers/base/dd.c:871)
>>>> [  141.484318][   T48]  driver_probe_device (drivers/base/dd.c:901)
>>>> [  141.484321][   T48]  __device_attach_driver (drivers/base/dd.c:1029)
>>>> [  141.484328][   T48]  bus_for_each_drv (drivers/base/bus.c:500)
>>>> [  141.484346][   T48]  __device_attach (drivers/base/dd.c:1101)
>>>> [  141.484367][   T48]  device_initial_probe (drivers/base/dd.c:1156)
>>>> [  141.484370][   T48]  bus_probe_device (drivers/base/bus.c:613)
>>>> [  141.484374][   T48]  device_add (drivers/base/core.c:3706)
>>>> [  141.484376][   T48]  usb_new_device (drivers/usb/core/hub.c:2695)
>>>> [  141.484386][   T48]  hub_event (drivers/usb/core/hub.c:5567 drivers/usb/core/hub.c:5707 drivers/usb/core/hub.c:5871 drivers/usb/core/hub.c:5953)
>>>> [  141.484406][   T48]  process_scheduled_works (kernel/workqueue.c:3314 kernel/workqueue.c:3397)
>>>> [  141.484412][   T48]  worker_thread (kernel/workqueue.c:3478)
>>>> [  141.484420][   T48]  kthread (kernel/kthread.c:436)
>>>> [  141.484431][   T48]  ret_from_fork (arch/x86/kernel/process.c:158)
>>>> [  141.484445][   T48]  ret_from_fork_asm (arch/x86/entry/entry_64.S:245)
>>>> [  141.484450][   T48]  </TASK>
>>>> [  141.484451][   T48]
>>>> [  141.523531][   T48] Freed by task 48 on cpu 1 at 141.481575s:
>>>> [  141.524120][   T48]  kasan_save_track (mm/kasan/common.c:57 mm/kasan/common.c:78)
>>>> [  141.524594][   T48]  kasan_save_free_info (mm/kasan/generic.c:584)
>>>> [  141.525089][   T48]  __kasan_slab_free (mm/kasan/common.c:253 mm/kasan/common.c:285)
>>>> [  141.525570][   T48]  kfree (./include/linux/kasan.h:235 mm/slub.c:2689 mm/slub.c:6251 mm/slub.c:6566)
>>>> [  141.525957][   T48]  au8522_release_state (drivers/media/dvb-frontends/au8522_common.c:124)
>>>> [  141.526467][   T48]  dvb_frontend_put (drivers/media/dvb-core/dvb_frontend.c:3093 drivers/media/dvb-core/dvb_frontend.c:141 drivers/media/dvb-core/dvb_frontend.c:166)
>>>> [  141.526957][   T48]  au0828_dvb_register (drivers/media/usb/au0828/au0828-dvb.c:518 drivers/media/usb/au0828/au0828-dvb.c:634)
>>>> [  141.527469][   T48]  au0828_usb_probe (drivers/media/usb/au0828/au0828-core.c:733)
>>>> [  141.527952][   T48]  usb_probe_interface (drivers/usb/core/driver.c:396)
>>>> [  141.528455][   T48]  really_probe (drivers/base/dd.c:? drivers/base/dd.c:709)
>>>> [  141.528908][   T48]  __driver_probe_device (drivers/base/dd.c:871)
>>>> [  141.529426][   T48]  driver_probe_device (drivers/base/dd.c:901)
>>>> [  141.529932][   T48]  __device_attach_driver (drivers/base/dd.c:1029)
>>>> [  141.530459][   T48]  bus_for_each_drv (drivers/base/bus.c:500)
>>>> [  141.530949][   T48]  __device_attach (drivers/base/dd.c:1101)
>>>> [  141.531419][   T48]  device_initial_probe (drivers/base/dd.c:1156)
>>>> [  141.531923][   T48]  bus_probe_device (drivers/base/bus.c:613)
>>>> [  141.532404][   T48]  device_add (drivers/base/core.c:3706)
>>>> [  141.532840][   T48]  usb_set_configuration (drivers/usb/core/message.c:2268)
>>>> [  141.533373][   T48]  usb_generic_driver_probe (drivers/usb/core/generic.c:250)
>>>> [  141.533907][   T48]  usb_probe_device (drivers/usb/core/driver.c:291)
>>>> [  141.534377][   T48]  really_probe (drivers/base/dd.c:? drivers/base/dd.c:709)
>>>> [  141.534833][   T48]  __driver_probe_device (drivers/base/dd.c:871)
>>>> [  141.535352][   T48]  driver_probe_device (drivers/base/dd.c:901)
>>>> [  141.535856][   T48]  __device_attach_driver (drivers/base/dd.c:1029)
>>>> [  141.536384][   T48]  bus_for_each_drv (drivers/base/bus.c:500)
>>>> [  141.536869][   T48]  __device_attach (drivers/base/dd.c:1101)
>>>> [  141.537340][   T48]  device_initial_probe (drivers/base/dd.c:1156)
>>>> [  141.537839][   T48]  bus_probe_device (drivers/base/bus.c:613)
>>>> [  141.538320][   T48]  device_add (drivers/base/core.c:3706)
>>>> [  141.538753][   T48]  usb_new_device (drivers/usb/core/hub.c:2695)
>>>> [  141.539226][   T48]  hub_event (drivers/usb/core/hub.c:5567 drivers/usb/core/hub.c:5707 drivers/usb/core/hub.c:5871 drivers/usb/core/hub.c:5953)
>>>> [  141.539672][   T48]  process_scheduled_works (kernel/workqueue.c:3314 kernel/workqueue.c:3397)
>>>> [  141.540205][   T48]  worker_thread (kernel/workqueue.c:3478)
>>>> [  141.540666][   T48]  kthread (kernel/kthread.c:436)
>>>> [  141.541069][   T48]  ret_from_fork (arch/x86/kernel/process.c:158)
>>>> [  141.541524][   T48]  ret_from_fork_asm (arch/x86/entry/entry_64.S:245)
>>>> [  141.541999][   T48]
>>>> [  141.542236][   T48] The buggy address belongs to the object at ffff888171d4a000
>>>> [  141.542236][   T48]  which belongs to the cache kmalloc-4k of size 4096
>>>> [  141.543602][   T48] The buggy address is located 280 bytes inside of
>>>> [  141.543602][   T48]  freed 4096-byte region [ffff888171d4a000, ffff888171d4b000)



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [BUG] KASAN: slab-use-after-free in au0828_dvb_register
  2026-06-01 20:35       ` Shuangpeng
@ 2026-06-02  2:44         ` Pei Xiao
  2026-06-02  3:51           ` Shuangpeng
  0 siblings, 1 reply; 8+ messages in thread
From: Pei Xiao @ 2026-06-02  2:44 UTC (permalink / raw)
  To: Shuangpeng
  Cc: xiaopeitux, brad, hverkuil+cisco, linux-kernel, linux-media,
	mchehab, mingo, tglx



在 2026/6/2 04:35, Shuangpeng 写道:
>
>> On May 31, 2026, at 23:38, Pei Xiao <xiaopei01@kylinos.cn> wrote:
>>
>>
>>
>> 在 2026/5/30 03:22, Shuangpeng 写道:
>>>> On May 29, 2026, at 04:30, xiaopeitux@foxmail.com wrote:
>>>>
>>>> From: Pei Xiao <xiaopei01@kylinos.cn>
>>>>
>>>>> Hi Kernel Maintainers,
>>>>>
>>>>> We hit the following KASAN report while testing current upstream kernel:
>>>>>
>>>>> KASAN: slab-use-after-free in au0828_dvb_register
>>>>>
>>>>> on commit: e8c2f9fdadee7cbc75134dc463c1e0d856d6e5c7 (May 25 2026)
>>>>>
>>>>> The reproducer and .config files are here.
>>>>> https://gist.github.com/shuangpengbai/c31163f8ef234ba4fe85038c2f97f9cc
>>>>>
>>>>> I’m happy to test debug patches or provide additional information.
>>>>>
>>>>> Reported-by: Shuangpeng Bai <shuangpeng.kernel@gmail.com>
>>>> Can you help post all the crash logs? 
>>>> Does the kernel log have this print: 
>>>> "The frontend of your DVB/ATSC card isn't supported yet." 
>>> I did not see this message in log.
>>>
>>>
>>>> Please help post all the logs, thank you!
>>> Thank you for taking a look. All terminal outputs after running the reproducer:
>>  au0828_usb_probe
>>          au0828_dvb_register
>>             dvb_attach(xc5000_attach, dvb->frontend,
>>             dvb_register  
>>                    if (dvb->frontend->ops.release)
>>                         dvb->frontend->ops.release(dvb->frontend);
>>
>> dvb_register 
>>     result = dvb_register_frontend(&dvb->adapter, dvb->frontend);
>>         pr_err("dvb_register_frontend failed (errno = %d)\n",//-12,  no kref_init(&fe->refcount);,fe->frontend_priv is NULL
>>                        result);
>>         goto fail_frontend
>>
>> fail_frontend:
>> dvb_frontend_detach(dvb->frontend);
>>
>> dvb_frontend_detach:
>>     dvb_frontend_put  
>>         __dvb_frontend_free
>>             dvb_frontend_invoke_release(fe, fe->ops.release);
>>  
>>  
>> static void dvb_frontend_invoke_release(struct dvb_frontend *fe,
>>                                         void (*release)(struct dvb_frontend *fe))
>> {
>>         if (release) {
>>                 release(fe);
>> #ifdef CONFIG_MEDIA_ATTACH
>>                 dvb_detach(release);
>> #endif  
>>         }
>> }  
>>
>> au8522_attach
>> .release              = au8522_release,
>>     au8522_release_state
>>         kfree(state);//have free
>>
>> How did this problem occur, and is the probability of it occurring high?
> I found this issue during testing kernel with our tool. This bug can be reliably reproduced.
>
>> so we can remove in au0828_dvb_register function follow lines to fix this UAF bug? 
>>
>> ret = dvb_register(dev);
>>         if (ret < 0) {
>>                // if (dvb->frontend->ops.release)
>>                //        dvb->frontend->ops.release(dvb->frontend);
>>                //  dvb->frontend = NULL;
>>                 return ret;
>>         }
>> Could you please help test this modified code?
> Could you please confirm whether the following is the intended change?
>
> I locally tested it by commenting out the three lines in the error path of
> au0828_dvb_register():
>
> diff --git a/drivers/media/usb/au0828/au0828-dvb.c b/drivers/media/usb/au0828/au0828-dvb.c
> index 31123e6f9fc3..f3d5a2b0de71 100644
> --- a/drivers/media/usb/au0828/au0828-dvb.c
> +++ b/drivers/media/usb/au0828/au0828-dvb.c
> @@ -633,9 +633,9 @@ int au0828_dvb_register(struct au0828_dev *dev)
>         /* register everything */
>         ret = dvb_register(dev);
>         if (ret < 0) {
> -               if (dvb->frontend->ops.release)
> -                       dvb->frontend->ops.release(dvb->frontend);
> -               dvb->frontend = NULL;
> +               // if (dvb->frontend->ops.release)
> +               //      dvb->frontend->ops.release(dvb->frontend);
> +               // dvb->frontend = NULL;
>                 return ret;
>         }
>
> With this change, I reran the reproducer and hit a NULL pointer
> dereference:
>
> [ 90.096547][ T10] BUG: kernel NULL pointer dereference, address: 0000000000000000
> [ 90.107156][ T10] au0828_dvb_unregister (drivers/media/usb/au0828/au0828-dvb.c:543)
> [ 90.107518][ T10] au0828_usb_disconnect (drivers/media/usb/au0828/au0828-core.c:179)
> [ 90.107875][ T10] usb_unbind_interface (drivers/usb/core/driver.c:458)
> [ 90.108965][ T10] device_release_driver_internal (drivers/base/dd.c:621 drivers/base/dd.c:1352 drivers/base/dd.c:1375)
> [ 90.109384][ T10] bus_remove_device (drivers/base/bus.c:657)
> [ 90.110494][ T10] device_del (drivers/base/core.c:3895)
> [ 90.111787][ T10] usb_disable_device (drivers/usb/core/message.c:1478)
> [ 90.112134][ T10] usb_disconnect (drivers/input/misc/yealink.c:421)
> [ 90.112460][ T10] hub_event (drivers/usb/core/hub.c:5407 drivers/usb/core/hub.c:5707 drivers/usb/core/hub.c:5871 drivers/usb/core/hub.c:5953)
> [ 90.114436][ T10] process_scheduled_works (kernel/workqueue.c:3314 kernel/workqueue.c:3397)
> [ 90.114817][ T10] worker_thread (kernel/workqueue.c:3478)
> [ 90.115490][ T10] kthread (kernel/kthread.c:436)
> [ 90.116448][ T10] ret_from_fork (arch/x86/kernel/process.c:158)
> [ 90.117759][ T10] ret_from_fork_asm (arch/x86/entry/entry_64.S:245)
>
> The crash happens in au0828_dvb_unregister() at:
> dvb->demux.dmx.remove_frontend(&dvb->demux.dmx, &dvb->fe_mem);
>
> So if this is the intended change, it seems to avoid the original release path,
> but it also leaves the device in a partially initialized state and triggers a
> NULL pointer dereference during disconnect.
Hi Shuangpeng:
  please test this patch: 
diff --git a/drivers/media/usb/au0828/au0828-dvb.c b/drivers/media/usb/au0828/au0828-dvb.c
index 31123e6f9fc3..052637429d8a 100644
--- a/drivers/media/usb/au0828/au0828-dvb.c
+++ b/drivers/media/usb/au0828/au0828-dvb.c
@@ -633,8 +633,8 @@ int au0828_dvb_register(struct au0828_dev *dev)
        /* register everything */
        ret = dvb_register(dev);
        if (ret < 0) {
-               if (dvb->frontend->ops.release)
-                       dvb->frontend->ops.release(dvb->frontend);
+               /* dvb->frontend freed in dvb_frontend_put, now we can set
+                * frontent to NULL */
                dvb->frontend = NULL;
                return ret;
        }

thank you so much!
Pei.
> Please let me know if there is a new patch you would like me to test.
>
>
>>> [   64.807294][   T42] usb 3-1: new high-speed USB device number 2 using dummy_hcd
>>> [   64.958989][   T42] usb 3-1: New USB device found, idVendor=0fe9, idProduct=d620, bcdDevice= 1.00
>>> [   64.961560][   T42] usb 3-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
>>> [   65.351442][   T42] au0828: i2c bus registered
>>> [   65.634777][   T42] au8522 1-0047: creating new instance
>>> [   65.655406][   T42] DVB: Unable to find symbol xc5000_attach()
>>> [   65.656022][   T42] dvbdev: DVB: registering new adapter (au0828)
>>> [   65.656632][   T42] au0828: dvb_register_frontend failed (errno = -12)
>>> [   65.658957][   T42] au8522 1-0047: destroying instance
>>> [   65.659499][   T42] ==================================================================
>>> [   65.660261][   T42] BUG: KASAN: slab-use-after-free in au0828_dvb_register+0x1280/0x15f0
>>> [   65.661023][   T42] Read of size 8 at addr ffff8881685f4118 by task kworker/1:1/42
>>> [   65.661742][   T42]
>>> [   65.661973][   T42] CPU: 1 UID: 0 PID: 42 Comm: kworker/1:1 Not tainted 7.1.0-rc5-00006-ge8c2f9fdadee #16 PREEMPT(
>>> [   65.661978][   T42] Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debia4
>>> [   65.661981][   T42] Workqueue: usb_hub_wq hub_event
>>> [   65.661988][   T42] Call Trace:
>>> [   65.661991][   T42]  <TASK>
>>> [   65.661993][   T42]  dump_stack_lvl+0x26/0x80
>>> [   65.661999][   T42]  print_report+0x16a/0x5d0
>>> [   65.662013][   T42]  kasan_report+0xc3/0x100
>>> [   65.662019][   T42]  au0828_dvb_register+0x1280/0x15f0
>>> [   65.662026][   T42]  au0828_usb_probe+0x353/0x4b0
>>> [   65.662029][   T42]  usb_probe_interface+0x4aa/0xa40
>>> [   65.662034][   T42]  really_probe+0x259/0x9a0
>>> [   65.662041][   T42]  __driver_probe_device+0x18b/0x370
>>> [   65.662045][   T42]  driver_probe_device+0x4b/0x1e0
>>> [   65.662049][   T42]  __device_attach_driver+0x1d0/0x2f0
>>> [   65.662055][   T42]  bus_for_each_drv+0x22a/0x260
>>> [   65.663294][   T42]  __device_attach+0x25a/0x480
>>> [   65.663321][   T42]  device_initial_probe+0x68/0xa0
>>> [   65.663324][   T42]  bus_probe_device+0x10a/0x1d0
>>> [   65.663328][   T42]  device_add+0x56b/0x9c0
>>> [   65.663332][   T42]  usb_set_configuration+0x1775/0x1d80
>>> [   65.663337][   T42]  usb_generic_driver_probe+0x61/0xf0
>>> [   65.663343][   T42]  usb_probe_device+0xd3/0x2a0
>>> [   65.663346][   T42]  really_probe+0x259/0x9a0
>>> [   65.663350][   T42]  __driver_probe_device+0x18b/0x370
>>> [   65.663354][   T42]  driver_probe_device+0x4b/0x1e0
>>> [   65.663357][   T42]  __device_attach_driver+0x1d0/0x2f0
>>> [   65.663363][   T42]  bus_for_each_drv+0x22a/0x260
>>> [   65.663381][   T42]  __device_attach+0x25a/0x480
>>> [   65.663403][   T42]  device_initial_probe+0x68/0xa0
>>> [   65.663405][   T42]  bus_probe_device+0x10a/0x1d0
>>> [   65.663409][   T42]  device_add+0x56b/0x9c0
>>> [   65.663412][   T42]  usb_new_device+0xbdd/0x1830
>>> [   65.663423][   T42]  hub_event+0x2358/0x4090
>>> [   65.663443][   T42]  process_scheduled_works+0x73d/0xed0
>>> [   65.663451][   T42]  worker_thread+0x7d6/0xb60
>>> [   65.663459][   T42]  kthread+0x322/0x410
>>> [   65.663470][   T42]  ret_from_fork+0x285/0x750
>>> [   65.663485][   T42]  ret_from_fork_asm+0x1a/0x30
>>> [   65.663491][   T42]  </TASK>
>>> [   65.663493][   T42]
>>> [   65.702422][   T42] Freed by task 42 on cpu 1 at 65.659497s:
>>> [   65.702994][   T42]  kasan_save_track+0x2e/0x90
>>> [   65.703471][   T42]  kasan_save_free_info+0x3c/0x50
>>> [   65.703965][   T42]  __kasan_slab_free+0x36/0x60
>>> [   65.704450][   T42]  kfree+0x154/0x450
>>> [   65.704839][   T42]  au8522_release_state+0x1b6/0x210
>>> [   65.705364][   T42]  dvb_frontend_put+0x12a/0x170
>>> [   65.705848][   T42]  au0828_dvb_register+0xfd9/0x15f0
>>> [   65.706373][   T42]  au0828_usb_probe+0x353/0x4b0
>>> [   65.706854][   T42]  usb_probe_interface+0x4aa/0xa40
>>> [   65.707373][   T42]  really_probe+0x259/0x9a0
>>> [   65.707822][   T42]  __driver_probe_device+0x18b/0x370
>>> [   65.708347][   T42]  driver_probe_device+0x4b/0x1e0
>>> [   65.708845][   T42]  __device_attach_driver+0x1d0/0x2f0
>>> [   65.709383][   T42]  bus_for_each_drv+0x22a/0x260
>>> [   65.709864][   T42]  __device_attach+0x25a/0x480
>>> [   65.710339][   T42]  device_initial_probe+0x68/0xa0
>>> [   65.710836][   T42]  bus_probe_device+0x10a/0x1d0
>>> [   65.711323][   T42]  device_add+0x56b/0x9c0
>>> [   65.711750][   T42]  usb_set_configuration+0x1775/0x1d80
>>> [   65.712294][   T42]  usb_generic_driver_probe+0x61/0xf0
>>> [   65.712822][   T42]  usb_probe_device+0xd3/0x2a0
>>> [   65.713305][   T42]  really_probe+0x259/0x9a0
>>> [   65.713752][   T42]  __driver_probe_device+0x18b/0x370
>>> [   65.714282][   T42]  driver_probe_device+0x4b/0x1e0
>>> [   65.714779][   T42]  __device_attach_driver+0x1d0/0x2f0
>>> [   65.715313][   T42]  bus_for_each_drv+0x22a/0x260
>>> [   65.715794][   T42]  __device_attach+0x25a/0x480
>>> [   65.716271][   T42]  device_initial_probe+0x68/0xa0
>>> [   65.716767][   T42]  bus_probe_device+0x10a/0x1d0
>>> [   65.717262][   T42]  device_add+0x56b/0x9c0
>>> [   65.717690][   T42]  usb_new_device+0xbdd/0x1830
>>> [   65.717869][    C0] clocksource: Watchdog remote CPU 1 read timed out
>>> [   65.718172][   T42]  hub_event+0x2358/0x4090
>>> [   65.718177][   T42]  process_scheduled_works+0x73d/0xed0
>>> [   65.718180][   T42]  worker_thread+0x7d6/0xb60
>>> [   65.718183][   T42]  kthread+0x322/0x410
>>> [   65.718187][   T42]  ret_from_fork+0x285/0x750
>>> [   65.718189][   T42]  ret_from_fork_asm+0x1a/0x30
>>> [   65.718192][   T42]
>>> [   65.718194][   T42] The buggy address belongs to the object at ffff8881685f4000
>>> [   65.718194][   T42]  which belongs to the cache kmalloc-4k of size 4096
>>> [   65.718197][   T42] The buggy address is located 280 bytes inside of
>>> [   65.718197][   T42]  freed 4096-byte region [ffff8881685f4000, ffff8881685f5000)
>>> [   65.718200][   T42]
>>> [   65.718201][   T42] The buggy address belongs to the physical page:
>>> [   65.718204][   T42] page: refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x1685f0
>>> [   65.718209][   T42] head: order:3 mapcount:0 entire_mapcount:0 nr_pages_mapped:0 pincount:0
>>> [   65.718212][   T42] flags: 0x17ff00000000040(head|node=0|zone=2|lastcpupid=0x7ff)
>>> [   65.729357][   T42] page_type: f5(slab)
>>> [   65.729757][   T42] raw: 017ff00000000040 ffff888100042140 dead000000000100 dead000000000122
>>> [   65.730603][   T42] raw: 0000000000000000 0000000800040004 00000000f5000000 0000000000000000
>>> [   65.731450][   T42] head: 017ff00000000040 ffff888100042140 dead000000000100 dead000000000122
>>> [   65.732301][   T42] head: 0000000000000000 0000000800040004 00000000f5000000 0000000000000000
>>> [   65.733211][   T42] head: 017ff00000000003 fffffffffffffe01 00000000ffffffff 00000000ffffffff
>>> [   65.734064][   T42] head: ffffffffffffffff 0000000000000000 00000000ffffffff 0000000000000008
>>> [   65.734922][   T42] page dumped because: kasan: bad access detected
>>> [   65.735562][   T42] page_owner tracks the page as allocated
>>> [   65.736133][   T42] page last allocated via order 3, migratetype Unmovable, gfp_mask 0xd20c0(__GFP_IO|__GFP_FS|__G2
>>> [   65.738177][   T42]  post_alloc_hook+0x152/0x180
>>> [   65.738654][   T42]  get_page_from_freelist+0x3996/0x3b50
>>> [   65.739207][   T42]  __alloc_frozen_pages_noprof+0x243/0x750
>>> [   65.739783][   T42]  allocate_slab+0x76/0x5e0
>>> [   65.740242][   T42]  refill_objects+0x2e1/0x360
>>> [   65.740706][   T42]  __pcs_replace_empty_main+0x233/0x440
>>> [   65.741262][   T42]  __kmalloc_cache_noprof+0x2d0/0x490
>>> [   65.741791][   T42]  au8522_get_state+0x266/0x4c0
>>> [   65.742280][   T42]  au8522_attach+0xba/0x2d0
>>> [   65.742728][   T42]  au0828_dvb_register+0xcc/0x15f0
>>> [   65.743241][   T42]  au0828_usb_probe+0x353/0x4b0
>>> [   65.743723][   T42]  usb_probe_interface+0x4aa/0xa40
>>> [   65.744264][   T42]  really_probe+0x259/0x9a0
>>> [   65.744713][   T42]  __driver_probe_device+0x18b/0x370
>>> [   65.745246][   T42]  driver_probe_device+0x4b/0x1e0
>>> [   65.745745][   T42]  __device_attach_driver+0x1d0/0x2f0
>>> [   65.746284][   T42] page last free pid 4578 tgid 4578 stack trace:
>>> [   65.746909][   T42]  __free_frozen_pages+0xb8c/0xcb0
>>> [   65.747427][   T42]  __slab_free+0x219/0x260
>>> [   65.747870][   T42]  qlist_free_all+0x33/0x120
>>> [   65.748339][   T42]  kasan_quarantine_reduce+0x152/0x170
>>> [   65.748877][   T42]  __kasan_slab_alloc+0x1f/0x60
>>> [   65.749368][   T42]  kmem_cache_alloc_noprof+0x1f0/0x480
>>> [   65.749908][   T42]  do_getname+0x2a/0x1c0
>>> [   65.750337][   T42]  do_sys_openat2+0x99/0x190
>>> [   65.750798][   T42]  __x64_sys_openat+0x20b/0x260
>>> [   65.751287][   T42]  do_syscall_64+0x125/0x590
>>> [   65.751744][   T42]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
>>> [   65.752334][   T42]
>>> [   65.752572][   T42] Memory state around the buggy address:
>>> [   65.753132][   T42]  ffff8881685f4000: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>>> [   65.753918][   T42]  ffff8881685f4080: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>>> [   65.754712][   T42] >ffff8881685f4100: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>>> [   65.755504][   T42]                             ^
>>> [   65.755985][   T42]  ffff8881685f4180: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>>> [   65.756775][   T42]  ffff8881685f4200: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>>> [   65.757575][   T42] ==================================================================
>>> [   65.758570][   T42] Kernel panic - not syncing: KASAN: panic_on_warn set ...
>>> [   65.759306][   T42] CPU: 1 UID: 0 PID: 42 Comm: kworker/1:1 Not tainted 7.1.0-rc5-00006-ge8c2f9fdadee #16 PREEMPT(
>>> [   65.760402][   T42] Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debia4
>>> [   65.761615][   T42] Workqueue: usb_hub_wq hub_event
>>> [   65.762263][   T42] Call Trace:
>>> [   65.762658][   T42]  <TASK>
>>> [   65.762956][   T42]  dump_stack_lvl+0x26/0x80
>>> [   65.763420][   T42]  vpanic+0x37d/0x710
>>> [   65.764686][   T42]  panic+0x9f/0xa0
>>> [   65.767120][   T42]  check_panic_on_warn+0x58/0x70
>>> [   65.768155][   T42]  end_report+0x44/0xe0
>>> [   65.769116][   T42]  kasan_report+0xd4/0x100
>>> [   65.770092][   T42]  au0828_dvb_register+0x1280/0x15f0
>>> [   65.771097][   T42]  au0828_usb_probe+0x353/0x4b0
>>> [   65.771586][   T42]  usb_probe_interface+0x4aa/0xa40
>>> [   65.772089][   T42]  really_probe+0x259/0x9a0
>>> [   65.772549][   T42]  __driver_probe_device+0x18b/0x370
>>> [   65.773069][   T42]  driver_probe_device+0x4b/0x1e0
>>> [   65.773576][   T42]  __device_attach_driver+0x1d0/0x2f0
>>> [   65.774692][   T42]  bus_for_each_drv+0x22a/0x260
>>> [   65.777453][   T42]  __device_attach+0x25a/0x480
>>> [   65.780818][   T42]  device_initial_probe+0x68/0xa0
>>> [   65.781322][   T42]  bus_probe_device+0x10a/0x1d0
>>> [   65.781800][   T42]  device_add+0x56b/0x9c0
>>> [   65.782284][   T42]  usb_set_configuration+0x1775/0x1d80
>>> [   65.782822][   T42]  usb_generic_driver_probe+0x61/0xf0
>>> [   65.783361][   T42]  usb_probe_device+0xd3/0x2a0
>>> [   65.783832][   T42]  really_probe+0x259/0x9a0
>>> [   65.784286][   T42]  __driver_probe_device+0x18b/0x370
>>> [   65.784804][   T42]  driver_probe_device+0x4b/0x1e0
>>> [   65.785304][   T42]  __device_attach_driver+0x1d0/0x2f0
>>> [   65.786416][   T42]  bus_for_each_drv+0x22a/0x260
>>> [   65.789198][   T42]  __device_attach+0x25a/0x480
>>> [   65.792606][   T42]  device_initial_probe+0x68/0xa0
>>> [   65.793101][   T42]  bus_probe_device+0x10a/0x1d0
>>> [   65.793602][   T42]  device_add+0x56b/0x9c0
>>> [   65.794028][   T42]  usb_new_device+0xbdd/0x1830
>>> [   65.795025][   T42]  hub_event+0x2358/0x4090
>>> [   65.797580][   T42]  process_scheduled_works+0x73d/0xed0
>>> [   65.798124][   T42]  worker_thread+0x7d6/0xb60
>>> [   65.799085][   T42]  kthread+0x322/0x410
>>> [   65.800465][   T42]  ret_from_fork+0x285/0x750
>>> [   65.802356][   T42]  ret_from_fork_asm+0x1a/0x30
>>> [   65.802830][   T42]  </TASK>
>>> [   65.803886][   T42] Kernel Offset: disabled
>>> [   65.804329][   T42] ---[ end Kernel panic - not syncing: KASAN: panic_on_warn set ... ]—
>>>
>>>>> [  141.481576][   T48] ==================================================================
>>>>> [  141.482348][   T48] BUG: KASAN: slab-use-after-free in au0828_dvb_register (drivers/media/usb/au0828/au0828-dvb.c:636)
>>>>> [  141.483148][   T48] Read of size 8 at addr ffff888171d4a118 by task kworker/1:1/48
>>>>> [  141.483903][   T48]
>>>>> [  141.484144][   T48] Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.34
>>>>> [  141.484148][   T48] Workqueue: usb_hub_wq hub_event
>>>>> [  141.484154][   T48] Call Trace:
>>>>> [  141.484157][   T48]  <TASK>
>>>>> [  141.484159][   T48]  dump_stack_lvl (lib/dump_stack.c:94 lib/dump_stack.c:120)
>>>>> [  141.484164][   T48]  print_report (mm/kasan/report.c:378 mm/kasan/report.c:482)
>>>>> [  141.484177][   T48]  kasan_report (mm/kasan/report.c:595)
>>>>> [  141.484183][   T48]  au0828_dvb_register (drivers/media/usb/au0828/au0828-dvb.c:636)
>>>>> [  141.484190][   T48]  au0828_usb_probe (drivers/media/usb/au0828/au0828-core.c:733)
>>>>> [  141.484193][   T48]  usb_probe_interface (drivers/usb/core/driver.c:396)
>>>>> [  141.484198][   T48]  really_probe (drivers/base/dd.c:? drivers/base/dd.c:709)
>>>>> [  141.484204][   T48]  __driver_probe_device (drivers/base/dd.c:871)
>>>>> [  141.484207][   T48]  driver_probe_device (drivers/base/dd.c:901)
>>>>> [  141.484211][   T48]  __device_attach_driver (drivers/base/dd.c:1029)
>>>>> [  141.484217][   T48]  bus_for_each_drv (drivers/base/bus.c:500)
>>>>> [  141.484264][   T48]  __device_attach (drivers/base/dd.c:1101)
>>>>> [  141.484289][   T48]  device_initial_probe (drivers/base/dd.c:1156)
>>>>> [  141.484292][   T48]  bus_probe_device (drivers/base/bus.c:613)
>>>>> [  141.484296][   T48]  device_add (drivers/base/core.c:3706)
>>>>> [  141.484299][   T48]  usb_set_configuration (drivers/usb/core/message.c:2268)
>>>>> [  141.484303][   T48]  usb_generic_driver_probe (drivers/usb/core/generic.c:250)
>>>>> [  141.484308][   T48]  usb_probe_device (drivers/usb/core/driver.c:291)
>>>>> [  141.484311][   T48]  really_probe (drivers/base/dd.c:? drivers/base/dd.c:709)
>>>>> [  141.484315][   T48]  __driver_probe_device (drivers/base/dd.c:871)
>>>>> [  141.484318][   T48]  driver_probe_device (drivers/base/dd.c:901)
>>>>> [  141.484321][   T48]  __device_attach_driver (drivers/base/dd.c:1029)
>>>>> [  141.484328][   T48]  bus_for_each_drv (drivers/base/bus.c:500)
>>>>> [  141.484346][   T48]  __device_attach (drivers/base/dd.c:1101)
>>>>> [  141.484367][   T48]  device_initial_probe (drivers/base/dd.c:1156)
>>>>> [  141.484370][   T48]  bus_probe_device (drivers/base/bus.c:613)
>>>>> [  141.484374][   T48]  device_add (drivers/base/core.c:3706)
>>>>> [  141.484376][   T48]  usb_new_device (drivers/usb/core/hub.c:2695)
>>>>> [  141.484386][   T48]  hub_event (drivers/usb/core/hub.c:5567 drivers/usb/core/hub.c:5707 drivers/usb/core/hub.c:5871 drivers/usb/core/hub.c:5953)
>>>>> [  141.484406][   T48]  process_scheduled_works (kernel/workqueue.c:3314 kernel/workqueue.c:3397)
>>>>> [  141.484412][   T48]  worker_thread (kernel/workqueue.c:3478)
>>>>> [  141.484420][   T48]  kthread (kernel/kthread.c:436)
>>>>> [  141.484431][   T48]  ret_from_fork (arch/x86/kernel/process.c:158)
>>>>> [  141.484445][   T48]  ret_from_fork_asm (arch/x86/entry/entry_64.S:245)
>>>>> [  141.484450][   T48]  </TASK>
>>>>> [  141.484451][   T48]
>>>>> [  141.523531][   T48] Freed by task 48 on cpu 1 at 141.481575s:
>>>>> [  141.524120][   T48]  kasan_save_track (mm/kasan/common.c:57 mm/kasan/common.c:78)
>>>>> [  141.524594][   T48]  kasan_save_free_info (mm/kasan/generic.c:584)
>>>>> [  141.525089][   T48]  __kasan_slab_free (mm/kasan/common.c:253 mm/kasan/common.c:285)
>>>>> [  141.525570][   T48]  kfree (./include/linux/kasan.h:235 mm/slub.c:2689 mm/slub.c:6251 mm/slub.c:6566)
>>>>> [  141.525957][   T48]  au8522_release_state (drivers/media/dvb-frontends/au8522_common.c:124)
>>>>> [  141.526467][   T48]  dvb_frontend_put (drivers/media/dvb-core/dvb_frontend.c:3093 drivers/media/dvb-core/dvb_frontend.c:141 drivers/media/dvb-core/dvb_frontend.c:166)
>>>>> [  141.526957][   T48]  au0828_dvb_register (drivers/media/usb/au0828/au0828-dvb.c:518 drivers/media/usb/au0828/au0828-dvb.c:634)
>>>>> [  141.527469][   T48]  au0828_usb_probe (drivers/media/usb/au0828/au0828-core.c:733)
>>>>> [  141.527952][   T48]  usb_probe_interface (drivers/usb/core/driver.c:396)
>>>>> [  141.528455][   T48]  really_probe (drivers/base/dd.c:? drivers/base/dd.c:709)
>>>>> [  141.528908][   T48]  __driver_probe_device (drivers/base/dd.c:871)
>>>>> [  141.529426][   T48]  driver_probe_device (drivers/base/dd.c:901)
>>>>> [  141.529932][   T48]  __device_attach_driver (drivers/base/dd.c:1029)
>>>>> [  141.530459][   T48]  bus_for_each_drv (drivers/base/bus.c:500)
>>>>> [  141.530949][   T48]  __device_attach (drivers/base/dd.c:1101)
>>>>> [  141.531419][   T48]  device_initial_probe (drivers/base/dd.c:1156)
>>>>> [  141.531923][   T48]  bus_probe_device (drivers/base/bus.c:613)
>>>>> [  141.532404][   T48]  device_add (drivers/base/core.c:3706)
>>>>> [  141.532840][   T48]  usb_set_configuration (drivers/usb/core/message.c:2268)
>>>>> [  141.533373][   T48]  usb_generic_driver_probe (drivers/usb/core/generic.c:250)
>>>>> [  141.533907][   T48]  usb_probe_device (drivers/usb/core/driver.c:291)
>>>>> [  141.534377][   T48]  really_probe (drivers/base/dd.c:? drivers/base/dd.c:709)
>>>>> [  141.534833][   T48]  __driver_probe_device (drivers/base/dd.c:871)
>>>>> [  141.535352][   T48]  driver_probe_device (drivers/base/dd.c:901)
>>>>> [  141.535856][   T48]  __device_attach_driver (drivers/base/dd.c:1029)
>>>>> [  141.536384][   T48]  bus_for_each_drv (drivers/base/bus.c:500)
>>>>> [  141.536869][   T48]  __device_attach (drivers/base/dd.c:1101)
>>>>> [  141.537340][   T48]  device_initial_probe (drivers/base/dd.c:1156)
>>>>> [  141.537839][   T48]  bus_probe_device (drivers/base/bus.c:613)
>>>>> [  141.538320][   T48]  device_add (drivers/base/core.c:3706)
>>>>> [  141.538753][   T48]  usb_new_device (drivers/usb/core/hub.c:2695)
>>>>> [  141.539226][   T48]  hub_event (drivers/usb/core/hub.c:5567 drivers/usb/core/hub.c:5707 drivers/usb/core/hub.c:5871 drivers/usb/core/hub.c:5953)
>>>>> [  141.539672][   T48]  process_scheduled_works (kernel/workqueue.c:3314 kernel/workqueue.c:3397)
>>>>> [  141.540205][   T48]  worker_thread (kernel/workqueue.c:3478)
>>>>> [  141.540666][   T48]  kthread (kernel/kthread.c:436)
>>>>> [  141.541069][   T48]  ret_from_fork (arch/x86/kernel/process.c:158)
>>>>> [  141.541524][   T48]  ret_from_fork_asm (arch/x86/entry/entry_64.S:245)
>>>>> [  141.541999][   T48]
>>>>> [  141.542236][   T48] The buggy address belongs to the object at ffff888171d4a000
>>>>> [  141.542236][   T48]  which belongs to the cache kmalloc-4k of size 4096
>>>>> [  141.543602][   T48] The buggy address is located 280 bytes inside of
>>>>> [  141.543602][   T48]  freed 4096-byte region [ffff888171d4a000, ffff888171d4b000)


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [BUG] KASAN: slab-use-after-free in au0828_dvb_register
  2026-06-02  2:44         ` Pei Xiao
@ 2026-06-02  3:51           ` Shuangpeng
  0 siblings, 0 replies; 8+ messages in thread
From: Shuangpeng @ 2026-06-02  3:51 UTC (permalink / raw)
  To: Pei Xiao
  Cc: xiaopeitux, brad, hverkuil+cisco, linux-kernel, linux-media,
	mchehab, mingo, tglx



> On Jun 1, 2026, at 22:44, Pei Xiao <xiaopei01@kylinos.cn> wrote:
> 
> 
> 
> 在 2026/6/2 04:35, Shuangpeng 写道:
>> 
>>> On May 31, 2026, at 23:38, Pei Xiao <xiaopei01@kylinos.cn> wrote:
>>> 
>>> 
>>> 
>>> 在 2026/5/30 03:22, Shuangpeng 写道:
>>>>> On May 29, 2026, at 04:30, xiaopeitux@foxmail.com wrote:
>>>>> 
>>>>> From: Pei Xiao <xiaopei01@kylinos.cn>
>>>>> 
>>>>>> Hi Kernel Maintainers,
>>>>>> 
>>>>>> We hit the following KASAN report while testing current upstream kernel:
>>>>>> 
>>>>>> KASAN: slab-use-after-free in au0828_dvb_register
>>>>>> 
>>>>>> on commit: e8c2f9fdadee7cbc75134dc463c1e0d856d6e5c7 (May 25 2026)
>>>>>> 
>>>>>> The reproducer and .config files are here.
>>>>>> https://gist.github.com/shuangpengbai/c31163f8ef234ba4fe85038c2f97f9cc
>>>>>> 
>>>>>> I’m happy to test debug patches or provide additional information.
>>>>>> 
>>>>>> Reported-by: Shuangpeng Bai <shuangpeng.kernel@gmail.com>
>>>>> Can you help post all the crash logs? 
>>>>> Does the kernel log have this print: 
>>>>> "The frontend of your DVB/ATSC card isn't supported yet."
>>>> I did not see this message in log.
>>>> 
>>>> 
>>>>> Please help post all the logs, thank you!
>>>> Thank you for taking a look. All terminal outputs after running the reproducer:
>>> au0828_usb_probe
>>>         au0828_dvb_register
>>>            dvb_attach(xc5000_attach, dvb->frontend,
>>>            dvb_register  
>>>                   if (dvb->frontend->ops.release)
>>>                        dvb->frontend->ops.release(dvb->frontend);
>>> 
>>> dvb_register 
>>>    result = dvb_register_frontend(&dvb->adapter, dvb->frontend);
>>>        pr_err("dvb_register_frontend failed (errno = %d)\n",//-12,  no kref_init(&fe->refcount);,fe->frontend_priv is NULL
>>>                       result);
>>>        goto fail_frontend
>>> 
>>> fail_frontend:
>>> dvb_frontend_detach(dvb->frontend);
>>> 
>>> dvb_frontend_detach:
>>>    dvb_frontend_put  
>>>        __dvb_frontend_free
>>>            dvb_frontend_invoke_release(fe, fe->ops.release);
>>> 
>>> 
>>> static void dvb_frontend_invoke_release(struct dvb_frontend *fe,
>>>                                        void (*release)(struct dvb_frontend *fe))
>>> {
>>>        if (release) {
>>>                release(fe);
>>> #ifdef CONFIG_MEDIA_ATTACH
>>>                dvb_detach(release);
>>> #endif  
>>>        }
>>> }  
>>> 
>>> au8522_attach
>>> .release              = au8522_release,
>>>    au8522_release_state
>>>        kfree(state);//have free
>>> 
>>> How did this problem occur, and is the probability of it occurring high?
>> I found this issue during testing kernel with our tool. This bug can be reliably reproduced.
>> 
>>> so we can remove in au0828_dvb_register function follow lines to fix this UAF bug? 
>>> 
>>> ret = dvb_register(dev);
>>>        if (ret < 0) {
>>>               // if (dvb->frontend->ops.release)
>>>               //        dvb->frontend->ops.release(dvb->frontend);
>>>               //  dvb->frontend = NULL;
>>>                return ret;
>>>        }
>>> Could you please help test this modified code?
>> Could you please confirm whether the following is the intended change?
>> 
>> I locally tested it by commenting out the three lines in the error path of
>> au0828_dvb_register():
>> 
>> diff --git a/drivers/media/usb/au0828/au0828-dvb.c b/drivers/media/usb/au0828/au0828-dvb.c
>> index 31123e6f9fc3..f3d5a2b0de71 100644
>> --- a/drivers/media/usb/au0828/au0828-dvb.c
>> +++ b/drivers/media/usb/au0828/au0828-dvb.c
>> @@ -633,9 +633,9 @@ int au0828_dvb_register(struct au0828_dev *dev)
>>        /* register everything */
>>        ret = dvb_register(dev);
>>        if (ret < 0) {
>> -               if (dvb->frontend->ops.release)
>> -                       dvb->frontend->ops.release(dvb->frontend);
>> -               dvb->frontend = NULL;
>> +               // if (dvb->frontend->ops.release)
>> +               //      dvb->frontend->ops.release(dvb->frontend);
>> +               // dvb->frontend = NULL;
>>                return ret;
>>        }
>> 
>> With this change, I reran the reproducer and hit a NULL pointer
>> dereference:
>> 
>> [ 90.096547][ T10] BUG: kernel NULL pointer dereference, address: 0000000000000000
>> [ 90.107156][ T10] au0828_dvb_unregister (drivers/media/usb/au0828/au0828-dvb.c:543)
>> [ 90.107518][ T10] au0828_usb_disconnect (drivers/media/usb/au0828/au0828-core.c:179)
>> [ 90.107875][ T10] usb_unbind_interface (drivers/usb/core/driver.c:458)
>> [ 90.108965][ T10] device_release_driver_internal (drivers/base/dd.c:621 drivers/base/dd.c:1352 drivers/base/dd.c:1375)
>> [ 90.109384][ T10] bus_remove_device (drivers/base/bus.c:657)
>> [ 90.110494][ T10] device_del (drivers/base/core.c:3895)
>> [ 90.111787][ T10] usb_disable_device (drivers/usb/core/message.c:1478)
>> [ 90.112134][ T10] usb_disconnect (drivers/input/misc/yealink.c:421)
>> [ 90.112460][ T10] hub_event (drivers/usb/core/hub.c:5407 drivers/usb/core/hub.c:5707 drivers/usb/core/hub.c:5871 drivers/usb/core/hub.c:5953)
>> [ 90.114436][ T10] process_scheduled_works (kernel/workqueue.c:3314 kernel/workqueue.c:3397)
>> [ 90.114817][ T10] worker_thread (kernel/workqueue.c:3478)
>> [ 90.115490][ T10] kthread (kernel/kthread.c:436)
>> [ 90.116448][ T10] ret_from_fork (arch/x86/kernel/process.c:158)
>> [ 90.117759][ T10] ret_from_fork_asm (arch/x86/entry/entry_64.S:245)
>> 
>> The crash happens in au0828_dvb_unregister() at:
>> dvb->demux.dmx.remove_frontend(&dvb->demux.dmx, &dvb->fe_mem);
>> 
>> So if this is the intended change, it seems to avoid the original release path,
>> but it also leaves the device in a partially initialized state and triggers a
>> NULL pointer dereference during disconnect.
> Hi Shuangpeng:
>   please test this patch: 
> diff --git a/drivers/media/usb/au0828/au0828-dvb.c b/drivers/media/usb/au0828/au0828-dvb.c
> index 31123e6f9fc3..052637429d8a 100644
> --- a/drivers/media/usb/au0828/au0828-dvb.c
> +++ b/drivers/media/usb/au0828/au0828-dvb.c
> @@ -633,8 +633,8 @@ int au0828_dvb_register(struct au0828_dev *dev)
>         /* register everything */
>         ret = dvb_register(dev);
>         if (ret < 0) {
> -               if (dvb->frontend->ops.release)
> -                       dvb->frontend->ops.release(dvb->frontend);
> +               /* dvb->frontend freed in dvb_frontend_put, now we can set
> +                * frontent to NULL */
>                 dvb->frontend = NULL;
>                 return ret;
>         }
> 

I tested this patch with my reproducer, and I could no longer trigger the bug.

The fix works on my side.

One minor nit: there is a typo in the comment: "frontent" should be "frontend".

Please feel free to add:

Reported-by: Shuangpeng Bai <shuangpeng.kernel@gmail.com>

Thanks for the fix!
Shuangpeng

> thank you so much!
> Pei.
>> Please let me know if there is a new patch you would like me to test.
>> 
>> 
>>>> [   64.807294][   T42] usb 3-1: new high-speed USB device number 2 using dummy_hcd
>>>> [   64.958989][   T42] usb 3-1: New USB device found, idVendor=0fe9, idProduct=d620, bcdDevice= 1.00
>>>> [   64.961560][   T42] usb 3-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
>>>> [   65.351442][   T42] au0828: i2c bus registered
>>>> [   65.634777][   T42] au8522 1-0047: creating new instance
>>>> [   65.655406][   T42] DVB: Unable to find symbol xc5000_attach()
>>>> [   65.656022][   T42] dvbdev: DVB: registering new adapter (au0828)
>>>> [   65.656632][   T42] au0828: dvb_register_frontend failed (errno = -12)
>>>> [   65.658957][   T42] au8522 1-0047: destroying instance
>>>> [   65.659499][   T42] ==================================================================
>>>> [   65.660261][   T42] BUG: KASAN: slab-use-after-free in au0828_dvb_register+0x1280/0x15f0
>>>> [   65.661023][   T42] Read of size 8 at addr ffff8881685f4118 by task kworker/1:1/42
>>>> [   65.661742][   T42]
>>>> [   65.661973][   T42] CPU: 1 UID: 0 PID: 42 Comm: kworker/1:1 Not tainted 7.1.0-rc5-00006-ge8c2f9fdadee #16 PREEMPT(
>>>> [   65.661978][   T42] Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debia4
>>>> [   65.661981][   T42] Workqueue: usb_hub_wq hub_event
>>>> [   65.661988][   T42] Call Trace:
>>>> [   65.661991][   T42]  <TASK>
>>>> [   65.661993][   T42]  dump_stack_lvl+0x26/0x80
>>>> [   65.661999][   T42]  print_report+0x16a/0x5d0
>>>> [   65.662013][   T42]  kasan_report+0xc3/0x100
>>>> [   65.662019][   T42]  au0828_dvb_register+0x1280/0x15f0
>>>> [   65.662026][   T42]  au0828_usb_probe+0x353/0x4b0
>>>> [   65.662029][   T42]  usb_probe_interface+0x4aa/0xa40
>>>> [   65.662034][   T42]  really_probe+0x259/0x9a0
>>>> [   65.662041][   T42]  __driver_probe_device+0x18b/0x370
>>>> [   65.662045][   T42]  driver_probe_device+0x4b/0x1e0
>>>> [   65.662049][   T42]  __device_attach_driver+0x1d0/0x2f0
>>>> [   65.662055][   T42]  bus_for_each_drv+0x22a/0x260
>>>> [   65.663294][   T42]  __device_attach+0x25a/0x480
>>>> [   65.663321][   T42]  device_initial_probe+0x68/0xa0
>>>> [   65.663324][   T42]  bus_probe_device+0x10a/0x1d0
>>>> [   65.663328][   T42]  device_add+0x56b/0x9c0
>>>> [   65.663332][   T42]  usb_set_configuration+0x1775/0x1d80
>>>> [   65.663337][   T42]  usb_generic_driver_probe+0x61/0xf0
>>>> [   65.663343][   T42]  usb_probe_device+0xd3/0x2a0
>>>> [   65.663346][   T42]  really_probe+0x259/0x9a0
>>>> [   65.663350][   T42]  __driver_probe_device+0x18b/0x370
>>>> [   65.663354][   T42]  driver_probe_device+0x4b/0x1e0
>>>> [   65.663357][   T42]  __device_attach_driver+0x1d0/0x2f0
>>>> [   65.663363][   T42]  bus_for_each_drv+0x22a/0x260
>>>> [   65.663381][   T42]  __device_attach+0x25a/0x480
>>>> [   65.663403][   T42]  device_initial_probe+0x68/0xa0
>>>> [   65.663405][   T42]  bus_probe_device+0x10a/0x1d0
>>>> [   65.663409][   T42]  device_add+0x56b/0x9c0
>>>> [   65.663412][   T42]  usb_new_device+0xbdd/0x1830
>>>> [   65.663423][   T42]  hub_event+0x2358/0x4090
>>>> [   65.663443][   T42]  process_scheduled_works+0x73d/0xed0
>>>> [   65.663451][   T42]  worker_thread+0x7d6/0xb60
>>>> [   65.663459][   T42]  kthread+0x322/0x410
>>>> [   65.663470][   T42]  ret_from_fork+0x285/0x750
>>>> [   65.663485][   T42]  ret_from_fork_asm+0x1a/0x30
>>>> [   65.663491][   T42]  </TASK>
>>>> [   65.663493][   T42]
>>>> [   65.702422][   T42] Freed by task 42 on cpu 1 at 65.659497s:
>>>> [   65.702994][   T42]  kasan_save_track+0x2e/0x90
>>>> [   65.703471][   T42]  kasan_save_free_info+0x3c/0x50
>>>> [   65.703965][   T42]  __kasan_slab_free+0x36/0x60
>>>> [   65.704450][   T42]  kfree+0x154/0x450
>>>> [   65.704839][   T42]  au8522_release_state+0x1b6/0x210
>>>> [   65.705364][   T42]  dvb_frontend_put+0x12a/0x170
>>>> [   65.705848][   T42]  au0828_dvb_register+0xfd9/0x15f0
>>>> [   65.706373][   T42]  au0828_usb_probe+0x353/0x4b0
>>>> [   65.706854][   T42]  usb_probe_interface+0x4aa/0xa40
>>>> [   65.707373][   T42]  really_probe+0x259/0x9a0
>>>> [   65.707822][   T42]  __driver_probe_device+0x18b/0x370
>>>> [   65.708347][   T42]  driver_probe_device+0x4b/0x1e0
>>>> [   65.708845][   T42]  __device_attach_driver+0x1d0/0x2f0
>>>> [   65.709383][   T42]  bus_for_each_drv+0x22a/0x260
>>>> [   65.709864][   T42]  __device_attach+0x25a/0x480
>>>> [   65.710339][   T42]  device_initial_probe+0x68/0xa0
>>>> [   65.710836][   T42]  bus_probe_device+0x10a/0x1d0
>>>> [   65.711323][   T42]  device_add+0x56b/0x9c0
>>>> [   65.711750][   T42]  usb_set_configuration+0x1775/0x1d80
>>>> [   65.712294][   T42]  usb_generic_driver_probe+0x61/0xf0
>>>> [   65.712822][   T42]  usb_probe_device+0xd3/0x2a0
>>>> [   65.713305][   T42]  really_probe+0x259/0x9a0
>>>> [   65.713752][   T42]  __driver_probe_device+0x18b/0x370
>>>> [   65.714282][   T42]  driver_probe_device+0x4b/0x1e0
>>>> [   65.714779][   T42]  __device_attach_driver+0x1d0/0x2f0
>>>> [   65.715313][   T42]  bus_for_each_drv+0x22a/0x260
>>>> [   65.715794][   T42]  __device_attach+0x25a/0x480
>>>> [   65.716271][   T42]  device_initial_probe+0x68/0xa0
>>>> [   65.716767][   T42]  bus_probe_device+0x10a/0x1d0
>>>> [   65.717262][   T42]  device_add+0x56b/0x9c0
>>>> [   65.717690][   T42]  usb_new_device+0xbdd/0x1830
>>>> [   65.717869][    C0] clocksource: Watchdog remote CPU 1 read timed out
>>>> [   65.718172][   T42]  hub_event+0x2358/0x4090
>>>> [   65.718177][   T42]  process_scheduled_works+0x73d/0xed0
>>>> [   65.718180][   T42]  worker_thread+0x7d6/0xb60
>>>> [   65.718183][   T42]  kthread+0x322/0x410
>>>> [   65.718187][   T42]  ret_from_fork+0x285/0x750
>>>> [   65.718189][   T42]  ret_from_fork_asm+0x1a/0x30
>>>> [   65.718192][   T42]
>>>> [   65.718194][   T42] The buggy address belongs to the object at ffff8881685f4000
>>>> [   65.718194][   T42]  which belongs to the cache kmalloc-4k of size 4096
>>>> [   65.718197][   T42] The buggy address is located 280 bytes inside of
>>>> [   65.718197][   T42]  freed 4096-byte region [ffff8881685f4000, ffff8881685f5000)
>>>> [   65.718200][   T42]
>>>> [   65.718201][   T42] The buggy address belongs to the physical page:
>>>> [   65.718204][   T42] page: refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x1685f0
>>>> [   65.718209][   T42] head: order:3 mapcount:0 entire_mapcount:0 nr_pages_mapped:0 pincount:0
>>>> [   65.718212][   T42] flags: 0x17ff00000000040(head|node=0|zone=2|lastcpupid=0x7ff)
>>>> [   65.729357][   T42] page_type: f5(slab)
>>>> [   65.729757][   T42] raw: 017ff00000000040 ffff888100042140 dead000000000100 dead000000000122
>>>> [   65.730603][   T42] raw: 0000000000000000 0000000800040004 00000000f5000000 0000000000000000
>>>> [   65.731450][   T42] head: 017ff00000000040 ffff888100042140 dead000000000100 dead000000000122
>>>> [   65.732301][   T42] head: 0000000000000000 0000000800040004 00000000f5000000 0000000000000000
>>>> [   65.733211][   T42] head: 017ff00000000003 fffffffffffffe01 00000000ffffffff 00000000ffffffff
>>>> [   65.734064][   T42] head: ffffffffffffffff 0000000000000000 00000000ffffffff 0000000000000008
>>>> [   65.734922][   T42] page dumped because: kasan: bad access detected
>>>> [   65.735562][   T42] page_owner tracks the page as allocated
>>>> [   65.736133][   T42] page last allocated via order 3, migratetype Unmovable, gfp_mask 0xd20c0(__GFP_IO|__GFP_FS|__G2
>>>> [   65.738177][   T42]  post_alloc_hook+0x152/0x180
>>>> [   65.738654][   T42]  get_page_from_freelist+0x3996/0x3b50
>>>> [   65.739207][   T42]  __alloc_frozen_pages_noprof+0x243/0x750
>>>> [   65.739783][   T42]  allocate_slab+0x76/0x5e0
>>>> [   65.740242][   T42]  refill_objects+0x2e1/0x360
>>>> [   65.740706][   T42]  __pcs_replace_empty_main+0x233/0x440
>>>> [   65.741262][   T42]  __kmalloc_cache_noprof+0x2d0/0x490
>>>> [   65.741791][   T42]  au8522_get_state+0x266/0x4c0
>>>> [   65.742280][   T42]  au8522_attach+0xba/0x2d0
>>>> [   65.742728][   T42]  au0828_dvb_register+0xcc/0x15f0
>>>> [   65.743241][   T42]  au0828_usb_probe+0x353/0x4b0
>>>> [   65.743723][   T42]  usb_probe_interface+0x4aa/0xa40
>>>> [   65.744264][   T42]  really_probe+0x259/0x9a0
>>>> [   65.744713][   T42]  __driver_probe_device+0x18b/0x370
>>>> [   65.745246][   T42]  driver_probe_device+0x4b/0x1e0
>>>> [   65.745745][   T42]  __device_attach_driver+0x1d0/0x2f0
>>>> [   65.746284][   T42] page last free pid 4578 tgid 4578 stack trace:
>>>> [   65.746909][   T42]  __free_frozen_pages+0xb8c/0xcb0
>>>> [   65.747427][   T42]  __slab_free+0x219/0x260
>>>> [   65.747870][   T42]  qlist_free_all+0x33/0x120
>>>> [   65.748339][   T42]  kasan_quarantine_reduce+0x152/0x170
>>>> [   65.748877][   T42]  __kasan_slab_alloc+0x1f/0x60
>>>> [   65.749368][   T42]  kmem_cache_alloc_noprof+0x1f0/0x480
>>>> [   65.749908][   T42]  do_getname+0x2a/0x1c0
>>>> [   65.750337][   T42]  do_sys_openat2+0x99/0x190
>>>> [   65.750798][   T42]  __x64_sys_openat+0x20b/0x260
>>>> [   65.751287][   T42]  do_syscall_64+0x125/0x590
>>>> [   65.751744][   T42]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
>>>> [   65.752334][   T42]
>>>> [   65.752572][   T42] Memory state around the buggy address:
>>>> [   65.753132][   T42]  ffff8881685f4000: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>>>> [   65.753918][   T42]  ffff8881685f4080: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>>>> [   65.754712][   T42] >ffff8881685f4100: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>>>> [   65.755504][   T42]                             ^
>>>> [   65.755985][   T42]  ffff8881685f4180: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>>>> [   65.756775][   T42]  ffff8881685f4200: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>>>> [   65.757575][   T42] ==================================================================
>>>> [   65.758570][   T42] Kernel panic - not syncing: KASAN: panic_on_warn set ...
>>>> [   65.759306][   T42] CPU: 1 UID: 0 PID: 42 Comm: kworker/1:1 Not tainted 7.1.0-rc5-00006-ge8c2f9fdadee #16 PREEMPT(
>>>> [   65.760402][   T42] Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debia4
>>>> [   65.761615][   T42] Workqueue: usb_hub_wq hub_event
>>>> [   65.762263][   T42] Call Trace:
>>>> [   65.762658][   T42]  <TASK>
>>>> [   65.762956][   T42]  dump_stack_lvl+0x26/0x80
>>>> [   65.763420][   T42]  vpanic+0x37d/0x710
>>>> [   65.764686][   T42]  panic+0x9f/0xa0
>>>> [   65.767120][   T42]  check_panic_on_warn+0x58/0x70
>>>> [   65.768155][   T42]  end_report+0x44/0xe0
>>>> [   65.769116][   T42]  kasan_report+0xd4/0x100
>>>> [   65.770092][   T42]  au0828_dvb_register+0x1280/0x15f0
>>>> [   65.771097][   T42]  au0828_usb_probe+0x353/0x4b0
>>>> [   65.771586][   T42]  usb_probe_interface+0x4aa/0xa40
>>>> [   65.772089][   T42]  really_probe+0x259/0x9a0
>>>> [   65.772549][   T42]  __driver_probe_device+0x18b/0x370
>>>> [   65.773069][   T42]  driver_probe_device+0x4b/0x1e0
>>>> [   65.773576][   T42]  __device_attach_driver+0x1d0/0x2f0
>>>> [   65.774692][   T42]  bus_for_each_drv+0x22a/0x260
>>>> [   65.777453][   T42]  __device_attach+0x25a/0x480
>>>> [   65.780818][   T42]  device_initial_probe+0x68/0xa0
>>>> [   65.781322][   T42]  bus_probe_device+0x10a/0x1d0
>>>> [   65.781800][   T42]  device_add+0x56b/0x9c0
>>>> [   65.782284][   T42]  usb_set_configuration+0x1775/0x1d80
>>>> [   65.782822][   T42]  usb_generic_driver_probe+0x61/0xf0
>>>> [   65.783361][   T42]  usb_probe_device+0xd3/0x2a0
>>>> [   65.783832][   T42]  really_probe+0x259/0x9a0
>>>> [   65.784286][   T42]  __driver_probe_device+0x18b/0x370
>>>> [   65.784804][   T42]  driver_probe_device+0x4b/0x1e0
>>>> [   65.785304][   T42]  __device_attach_driver+0x1d0/0x2f0
>>>> [   65.786416][   T42]  bus_for_each_drv+0x22a/0x260
>>>> [   65.789198][   T42]  __device_attach+0x25a/0x480
>>>> [   65.792606][   T42]  device_initial_probe+0x68/0xa0
>>>> [   65.793101][   T42]  bus_probe_device+0x10a/0x1d0
>>>> [   65.793602][   T42]  device_add+0x56b/0x9c0
>>>> [   65.794028][   T42]  usb_new_device+0xbdd/0x1830
>>>> [   65.795025][   T42]  hub_event+0x2358/0x4090
>>>> [   65.797580][   T42]  process_scheduled_works+0x73d/0xed0
>>>> [   65.798124][   T42]  worker_thread+0x7d6/0xb60
>>>> [   65.799085][   T42]  kthread+0x322/0x410
>>>> [   65.800465][   T42]  ret_from_fork+0x285/0x750
>>>> [   65.802356][   T42]  ret_from_fork_asm+0x1a/0x30
>>>> [   65.802830][   T42]  </TASK>
>>>> [   65.803886][   T42] Kernel Offset: disabled
>>>> [   65.804329][   T42] ---[ end Kernel panic - not syncing: KASAN: panic_on_warn set ... ]—
>>>> 
>>>>>> [  141.481576][   T48] ==================================================================
>>>>>> [  141.482348][   T48] BUG: KASAN: slab-use-after-free in au0828_dvb_register (drivers/media/usb/au0828/au0828-dvb.c:636)
>>>>>> [  141.483148][   T48] Read of size 8 at addr ffff888171d4a118 by task kworker/1:1/48
>>>>>> [  141.483903][   T48]
>>>>>> [  141.484144][   T48] Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.34
>>>>>> [  141.484148][   T48] Workqueue: usb_hub_wq hub_event
>>>>>> [  141.484154][   T48] Call Trace:
>>>>>> [  141.484157][   T48]  <TASK>
>>>>>> [  141.484159][   T48]  dump_stack_lvl (lib/dump_stack.c:94 lib/dump_stack.c:120)
>>>>>> [  141.484164][   T48]  print_report (mm/kasan/report.c:378 mm/kasan/report.c:482)
>>>>>> [  141.484177][   T48]  kasan_report (mm/kasan/report.c:595)
>>>>>> [  141.484183][   T48]  au0828_dvb_register (drivers/media/usb/au0828/au0828-dvb.c:636)
>>>>>> [  141.484190][   T48]  au0828_usb_probe (drivers/media/usb/au0828/au0828-core.c:733)
>>>>>> [  141.484193][   T48]  usb_probe_interface (drivers/usb/core/driver.c:396)
>>>>>> [  141.484198][   T48]  really_probe (drivers/base/dd.c:? drivers/base/dd.c:709)
>>>>>> [  141.484204][   T48]  __driver_probe_device (drivers/base/dd.c:871)
>>>>>> [  141.484207][   T48]  driver_probe_device (drivers/base/dd.c:901)
>>>>>> [  141.484211][   T48]  __device_attach_driver (drivers/base/dd.c:1029)
>>>>>> [  141.484217][   T48]  bus_for_each_drv (drivers/base/bus.c:500)
>>>>>> [  141.484264][   T48]  __device_attach (drivers/base/dd.c:1101)
>>>>>> [  141.484289][   T48]  device_initial_probe (drivers/base/dd.c:1156)
>>>>>> [  141.484292][   T48]  bus_probe_device (drivers/base/bus.c:613)
>>>>>> [  141.484296][   T48]  device_add (drivers/base/core.c:3706)
>>>>>> [  141.484299][   T48]  usb_set_configuration (drivers/usb/core/message.c:2268)
>>>>>> [  141.484303][   T48]  usb_generic_driver_probe (drivers/usb/core/generic.c:250)
>>>>>> [  141.484308][   T48]  usb_probe_device (drivers/usb/core/driver.c:291)
>>>>>> [  141.484311][   T48]  really_probe (drivers/base/dd.c:? drivers/base/dd.c:709)
>>>>>> [  141.484315][   T48]  __driver_probe_device (drivers/base/dd.c:871)
>>>>>> [  141.484318][   T48]  driver_probe_device (drivers/base/dd.c:901)
>>>>>> [  141.484321][   T48]  __device_attach_driver (drivers/base/dd.c:1029)
>>>>>> [  141.484328][   T48]  bus_for_each_drv (drivers/base/bus.c:500)
>>>>>> [  141.484346][   T48]  __device_attach (drivers/base/dd.c:1101)
>>>>>> [  141.484367][   T48]  device_initial_probe (drivers/base/dd.c:1156)
>>>>>> [  141.484370][   T48]  bus_probe_device (drivers/base/bus.c:613)
>>>>>> [  141.484374][   T48]  device_add (drivers/base/core.c:3706)
>>>>>> [  141.484376][   T48]  usb_new_device (drivers/usb/core/hub.c:2695)
>>>>>> [  141.484386][   T48]  hub_event (drivers/usb/core/hub.c:5567 drivers/usb/core/hub.c:5707 drivers/usb/core/hub.c:5871 drivers/usb/core/hub.c:5953)
>>>>>> [  141.484406][   T48]  process_scheduled_works (kernel/workqueue.c:3314 kernel/workqueue.c:3397)
>>>>>> [  141.484412][   T48]  worker_thread (kernel/workqueue.c:3478)
>>>>>> [  141.484420][   T48]  kthread (kernel/kthread.c:436)
>>>>>> [  141.484431][   T48]  ret_from_fork (arch/x86/kernel/process.c:158)
>>>>>> [  141.484445][   T48]  ret_from_fork_asm (arch/x86/entry/entry_64.S:245)
>>>>>> [  141.484450][   T48]  </TASK>
>>>>>> [  141.484451][   T48]
>>>>>> [  141.523531][   T48] Freed by task 48 on cpu 1 at 141.481575s:
>>>>>> [  141.524120][   T48]  kasan_save_track (mm/kasan/common.c:57 mm/kasan/common.c:78)
>>>>>> [  141.524594][   T48]  kasan_save_free_info (mm/kasan/generic.c:584)
>>>>>> [  141.525089][   T48]  __kasan_slab_free (mm/kasan/common.c:253 mm/kasan/common.c:285)
>>>>>> [  141.525570][   T48]  kfree (./include/linux/kasan.h:235 mm/slub.c:2689 mm/slub.c:6251 mm/slub.c:6566)
>>>>>> [  141.525957][   T48]  au8522_release_state (drivers/media/dvb-frontends/au8522_common.c:124)
>>>>>> [  141.526467][   T48]  dvb_frontend_put (drivers/media/dvb-core/dvb_frontend.c:3093 drivers/media/dvb-core/dvb_frontend.c:141 drivers/media/dvb-core/dvb_frontend.c:166)
>>>>>> [  141.526957][   T48]  au0828_dvb_register (drivers/media/usb/au0828/au0828-dvb.c:518 drivers/media/usb/au0828/au0828-dvb.c:634)
>>>>>> [  141.527469][   T48]  au0828_usb_probe (drivers/media/usb/au0828/au0828-core.c:733)
>>>>>> [  141.527952][   T48]  usb_probe_interface (drivers/usb/core/driver.c:396)
>>>>>> [  141.528455][   T48]  really_probe (drivers/base/dd.c:? drivers/base/dd.c:709)
>>>>>> [  141.528908][   T48]  __driver_probe_device (drivers/base/dd.c:871)
>>>>>> [  141.529426][   T48]  driver_probe_device (drivers/base/dd.c:901)
>>>>>> [  141.529932][   T48]  __device_attach_driver (drivers/base/dd.c:1029)
>>>>>> [  141.530459][   T48]  bus_for_each_drv (drivers/base/bus.c:500)
>>>>>> [  141.530949][   T48]  __device_attach (drivers/base/dd.c:1101)
>>>>>> [  141.531419][   T48]  device_initial_probe (drivers/base/dd.c:1156)
>>>>>> [  141.531923][   T48]  bus_probe_device (drivers/base/bus.c:613)
>>>>>> [  141.532404][   T48]  device_add (drivers/base/core.c:3706)
>>>>>> [  141.532840][   T48]  usb_set_configuration (drivers/usb/core/message.c:2268)
>>>>>> [  141.533373][   T48]  usb_generic_driver_probe (drivers/usb/core/generic.c:250)
>>>>>> [  141.533907][   T48]  usb_probe_device (drivers/usb/core/driver.c:291)
>>>>>> [  141.534377][   T48]  really_probe (drivers/base/dd.c:? drivers/base/dd.c:709)
>>>>>> [  141.534833][   T48]  __driver_probe_device (drivers/base/dd.c:871)
>>>>>> [  141.535352][   T48]  driver_probe_device (drivers/base/dd.c:901)
>>>>>> [  141.535856][   T48]  __device_attach_driver (drivers/base/dd.c:1029)
>>>>>> [  141.536384][   T48]  bus_for_each_drv (drivers/base/bus.c:500)
>>>>>> [  141.536869][   T48]  __device_attach (drivers/base/dd.c:1101)
>>>>>> [  141.537340][   T48]  device_initial_probe (drivers/base/dd.c:1156)
>>>>>> [  141.537839][   T48]  bus_probe_device (drivers/base/bus.c:613)
>>>>>> [  141.538320][   T48]  device_add (drivers/base/core.c:3706)
>>>>>> [  141.538753][   T48]  usb_new_device (drivers/usb/core/hub.c:2695)
>>>>>> [  141.539226][   T48]  hub_event (drivers/usb/core/hub.c:5567 drivers/usb/core/hub.c:5707 drivers/usb/core/hub.c:5871 drivers/usb/core/hub.c:5953)
>>>>>> [  141.539672][   T48]  process_scheduled_works (kernel/workqueue.c:3314 kernel/workqueue.c:3397)
>>>>>> [  141.540205][   T48]  worker_thread (kernel/workqueue.c:3478)
>>>>>> [  141.540666][   T48]  kthread (kernel/kthread.c:436)
>>>>>> [  141.541069][   T48]  ret_from_fork (arch/x86/kernel/process.c:158)
>>>>>> [  141.541524][   T48]  ret_from_fork_asm (arch/x86/entry/entry_64.S:245)
>>>>>> [  141.541999][   T48]
>>>>>> [  141.542236][   T48] The buggy address belongs to the object at ffff888171d4a000
>>>>>> [  141.542236][   T48]  which belongs to the cache kmalloc-4k of size 4096
>>>>>> [  141.543602][   T48] The buggy address is located 280 bytes inside of
>>>>>> [  141.543602][   T48]  freed 4096-byte region [ffff888171d4a000, ffff888171d4b000)
> 


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2026-06-02  3:52 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-05-29  0:17 [BUG] KASAN: slab-use-after-free in au0828_dvb_register Shuangpeng
2026-05-29  8:30 ` xiaopeitux
2026-05-29 19:22   ` [BUG] " Shuangpeng
2026-06-01  1:18     ` Pei Xiao
2026-06-01  3:38     ` Pei Xiao
2026-06-01 20:35       ` Shuangpeng
2026-06-02  2:44         ` Pei Xiao
2026-06-02  3:51           ` Shuangpeng

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®