From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-qv1-f43.google.com (mail-qv1-f43.google.com [209.85.219.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 25EC72749DF for ; Tue, 2 Jun 2026 03:52:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.43 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780372329; cv=none; b=hSbUgcgISecCQ34AgfFXUQ6mAjwka2TFcWxtexKLbd1WfkCsZ8LET6SBk35x/LiTKC3VaqoTk2wyAP1YizxtOy/KjQhJX07MAefq/IQ++ufdVT4egtZc3ZtVWreRJGYR1bER4NikteoCYALV1fqc8G/zWf5hHDLEqmQfup5KBDw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780372329; c=relaxed/simple; bh=pEx76D1kHkssaA4Mc+DFJyFkX+eGNB8H3KgaSVMKyas=; h=Content-Type:Mime-Version:Subject:From:In-Reply-To:Date:Cc: Message-Id:References:To; b=lIhHwPvrMMFFjQsWiNyGJz0VfFZoDUD5/U3elrfywRrvCQJaDAymoBeuGMFI+pk3JYoJZ5Nu848iD9cc3wza28xSskbmUVOIKfJqRjt2zDsZnjVZzSKIsJyT6vpkYtznbjv63mK+TPwP6K2SwFk4mGK+TUYzf3K+T+5FKI6NEos= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Onu9lw4X; arc=none smtp.client-ip=209.85.219.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Onu9lw4X" Received: by mail-qv1-f43.google.com with SMTP id 6a1803df08f44-8ccf18ef922so40231206d6.3 for ; Mon, 01 Jun 2026 20:52:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780372326; x=1780977126; darn=vger.kernel.org; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=J5Kc1TGaFiZXi+8aLl+nbkl8I0xSTi5CiU5d0c1Xfak=; b=Onu9lw4X0W4Jm2As5SSePBiYbI2XXu2oy+667L5ZJ81HX5aq1f2EjFk6JPVTRxMZXs 17xd/VSX9Mg32NWcXvkc2xvTnPM3llhFOKBRB+26WYm8dgdIywwaVIZg68CT1QkyA19x VbVdKSM021cVuTxZBRav0S3RiBuIu5E07Vmzj82IRxxcxpGHhKi3DdNmewX2z2UyxU70 PbB7FtwchvqCClrL+XnmswMv19hKTyclHNSonsPo/YXtnFDrkQqSKV5dtn58YrwRehhk Rds7751z06IgRPux63UWcalRC2Nu5zNLwQgclWraSo74FMmjtFjWOehGyN1gcI8nDrHM FltQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780372326; x=1780977126; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-gg:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=J5Kc1TGaFiZXi+8aLl+nbkl8I0xSTi5CiU5d0c1Xfak=; b=KvTNXFC70n10um3u+iFJEjbRv0GjGVC7N8SRikH2vapY1ekRgCZKK3E2m9r37b9UmC 4K4JiWpUQZGL3AlMGNOOIioTyUuWXLo6+kSQQJb1C0X8N5k3EQxPKYeMWpErMMsfj948 ckeGbgyDzaN37RvdZZlrga/hRX0cKo19/aTv1Zaak5DgKDpxKmfvYvu4WFacrQT1mcEm t5ZIoUOkY8XlGN4ue1OuFZ41Ac889OX/f2/+nte3UFBBDhRI8BhzCtijddpH0C/9RDYH sqnWQtSnZvUgb5VK0fn2P0fDziHUk1EMKu27jReDUOUrUeuMskTSB1k5Qz8P636HsyvP c0vg== X-Forwarded-Encrypted: i=1; AFNElJ/hb3fVqF7mH0QKZ5qk6lJvz1KdPDoGk23YFcawpZtsPbHEnISOw1pRvJapfHfEVvvS6iSi2Y1Sl1/aLoQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yw2JJTfbl6hRce/YLRL4mrPs+kCTPvhA0KZa/0wlXoUMGQrFH2H Rb1ik+3/bWijl3wYgeHT1zqZG4HDYFqDHtl4QMfbFAZNzAdlN3UaPv+f X-Gm-Gg: Acq92OGdR5imJMWlT8uwRnKgz4DE90G5ooo5mX5K31jEcQbZLKboE2fY3b0+H7xRE+I YI8woMqNibozKCP1Ld7SMQX0OrxHxuKQIylOb2Wc4HDeIEaz2BpLB4Tin76BXERgCvRlEzjBrIu Q/7glAsyXSFM+m1JY6UOe392lkw/K+syIX/x2PawKTORvbVF2Gi/NR/CQ66ZWgv8PyGpGzSrsSx U9uoIR447aXigFgh8DwXW/SKM/b2IE+zWO4Sd0RvqC21REhAiOCJsZX+b7GfwuYGGkbHofj3XH0 i+T1nkdStbDpCXk1K8vPJVkiAoU2UV37wAbPedoQNJ9juYfmZPL1K5gaPcgbTl6yEpNjjOhp6UO mfGzYrCyiUiEVJFBWdePbzpEAgWrndZQjXswXg29/TuYhIJTWdr0/Un10RHhM8FP9LGGx6hvaV+ HamzIX0ELoKtAmhSNFpf9RJEQ/nZWYO28CkcB8/avdkBg43F44udqP2XwUI/il4mHulc/qDfSh/ lU= X-Received: by 2002:ad4:5c47:0:b0:8cb:e63e:2a4e with SMTP id 6a1803df08f44-8ccefd33624mr238246036d6.6.1780372325849; Mon, 01 Jun 2026 20:52:05 -0700 (PDT) Received: from smtpclient.apple ([2601:985:4601:5df0:b9fd:5075:4c49:f34a]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-8ccea1c30ecsm108468636d6.25.2026.06.01.20.52.04 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 01 Jun 2026 20:52:05 -0700 (PDT) Content-Type: text/plain; charset=utf-8 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3864.600.51.1.1\)) Subject: Re: [BUG] KASAN: slab-use-after-free in au0828_dvb_register From: Shuangpeng In-Reply-To: Date: Mon, 1 Jun 2026 23:51:54 -0400 Cc: xiaopeitux@foxmail.com, brad@nextdimension.cc, hverkuil+cisco@kernel.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, mchehab@kernel.org, mingo@kernel.org, tglx@kernel.org Content-Transfer-Encoding: quoted-printable Message-Id: References: <2EBF1AF0-ED21-4B11-87DB-9E40AD082F7F@gmail.com> <79734bf1-a6cd-45a3-af8b-a0d930f27041@kylinos.cn> <85EEDF0E-FBF5-4395-9BF4-45CE7BD5F139@gmail.com> To: Pei Xiao X-Mailer: Apple Mail (2.3864.600.51.1.1) > On Jun 1, 2026, at 22:44, Pei Xiao wrote: >=20 >=20 >=20 > =E5=9C=A8 2026/6/2 04:35, Shuangpeng =E5=86=99=E9=81=93: >>=20 >>> On May 31, 2026, at 23:38, Pei Xiao wrote: >>>=20 >>>=20 >>>=20 >>> =E5=9C=A8 2026/5/30 03:22, Shuangpeng =E5=86=99=E9=81=93: >>>>> On May 29, 2026, at 04:30, xiaopeitux@foxmail.com wrote: >>>>>=20 >>>>> From: Pei Xiao >>>>>=20 >>>>>> Hi Kernel Maintainers, >>>>>>=20 >>>>>> We hit the following KASAN report while testing current upstream = kernel: >>>>>>=20 >>>>>> KASAN: slab-use-after-free in au0828_dvb_register >>>>>>=20 >>>>>> on commit: e8c2f9fdadee7cbc75134dc463c1e0d856d6e5c7 (May 25 2026) >>>>>>=20 >>>>>> The reproducer and .config files are here. >>>>>> = https://gist.github.com/shuangpengbai/c31163f8ef234ba4fe85038c2f97f9cc >>>>>>=20 >>>>>> I=E2=80=99m happy to test debug patches or provide additional = information. >>>>>>=20 >>>>>> Reported-by: Shuangpeng Bai >>>>> Can you help post all the crash logs?=20 >>>>> Does the kernel log have this print:=20 >>>>> "The frontend of your DVB/ATSC card isn't supported yet." >>>> I did not see this message in log. >>>>=20 >>>>=20 >>>>> 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 =20 >>> if (dvb->frontend->ops.release) >>> dvb->frontend->ops.release(dvb->frontend); >>>=20 >>> dvb_register=20 >>> result =3D dvb_register_frontend(&dvb->adapter, dvb->frontend); >>> pr_err("dvb_register_frontend failed (errno =3D %d)\n",//-12, = no kref_init(&fe->refcount);=EF=BC=8Cfe->frontend_priv is NULL >>> result); >>> goto fail_frontend >>>=20 >>> fail_frontend: >>> dvb_frontend_detach(dvb->frontend); >>>=20 >>> dvb_frontend_detach: >>> dvb_frontend_put =20 >>> __dvb_frontend_free >>> dvb_frontend_invoke_release(fe, fe->ops.release); >>>=20 >>>=20 >>> 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 =20 >>> } >>> } =20 >>>=20 >>> au8522_attach >>> .release =3D au8522_release, >>> au8522_release_state >>> kfree(state);//have free >>>=20 >>> 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. >>=20 >>> so we can remove in au0828_dvb_register function follow lines to fix = this UAF bug?=20 >>>=20 >>> ret =3D dvb_register(dev); >>> if (ret < 0) { >>> // if (dvb->frontend->ops.release) >>> // dvb->frontend->ops.release(dvb->frontend); >>> // dvb->frontend =3D NULL; >>> return ret; >>> } >>> Could you please help test this modified code? >> Could you please confirm whether the following is the intended = change? >>=20 >> I locally tested it by commenting out the three lines in the error = path of >> au0828_dvb_register(): >>=20 >> 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 =3D dvb_register(dev); >> if (ret < 0) { >> - if (dvb->frontend->ops.release) >> - dvb->frontend->ops.release(dvb->frontend); >> - dvb->frontend =3D NULL; >> + // if (dvb->frontend->ops.release) >> + // dvb->frontend->ops.release(dvb->frontend); >> + // dvb->frontend =3D NULL; >> return ret; >> } >>=20 >> With this change, I reran the reproducer and hit a NULL pointer >> dereference: >>=20 >> [ 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) >>=20 >> The crash happens in au0828_dvb_unregister() at: >> dvb->demux.dmx.remove_frontend(&dvb->demux.dmx, &dvb->fe_mem); >>=20 >> 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:=20 > 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 =3D 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 =3D NULL; > return ret; > } >=20 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 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. >>=20 >>=20 >>>> [ 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=3D0fe9, idProduct=3Dd620, bcdDevice=3D 1.00 >>>> [ 64.961560][ T42] usb 3-1: New USB device strings: Mfr=3D0, = Product=3D0, SerialNumber=3D0 >>>> [ 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 = =3D -12) >>>> [ 65.658957][ T42] au8522 1-0047: destroying instance >>>> [ 65.659499][ T42] = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>>> [ 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] >>>> [ 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] >>>> [ 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=3D0|zone=3D2|lastcpupid=3D0x7ff) >>>> [ 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] = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>>> [ 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] >>>> [ 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] >>>> [ 65.803886][ T42] Kernel Offset: disabled >>>> [ 65.804329][ T42] ---[ end Kernel panic - not syncing: KASAN: = panic_on_warn set ... ]=E2=80=94 >>>>=20 >>>>>> [ 141.481576][ T48] = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>>>>> [ 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] >>>>>> [ 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] >>>>>> [ 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) >=20