In the Linux kernel, the following vulnerability has been resolved:
media: iris: fix module removal if firmware download failed
Fix remove if firmware failed to load: qcom-iris aa00000.video-codec: Direct firmware load for qcom/vpu/vpu33_p4.mbn failed with error -2 qcom-iris aa00000.video-codec: firmware download failed qcom-iris aa00000.video-codec: core init failed
then: $ echo aa00000.video-codec > /sys/bus/platform/drivers/qcom-iris/unbind
Triggers: genpd genpd:1:aa00000.video-codec: Runtime PM usage count underflow! ------------[ cut here ]------------ videoccmvs0clk already disabled WARNING: drivers/clk/clk.c:1206 at clkcoredisable+0xa4/0xac, CPU#1: sh/542 <snip> pc : clkcoredisable+0xa4/0xac lr : clkcoredisable+0xa4/0xac <snip> Call trace: clkcoredisable+0xa4/0xac (P) clkdisable+0x30/0x4c irisdisableunprepareclock+0x20/0x48 [qcomiris] irisvpupoweroffhw+0x48/0x58 [qcomiris] irisvpu33poweroffhardware+0x44/0x230 [qcomiris] irisvpupoweroff+0x34/0x84 [qcomiris] iriscoredeinit+0x44/0xc8 [qcomiris] irisremove+0x20/0x48 [qcomiris] platformremove+0x20/0x30 deviceremove+0x4c/0x80 <snip> ---[ end trace 0000000000000000 ]--- ------------[ cut here ]------------ videoccmvs0clk already unprepared WARNING: drivers/clk/clk.c:1065 at clkcoreunprepare+0xf0/0x110, CPU#2: sh/542 <snip> pc : clkcoreunprepare+0xf0/0x110 lr : clkcoreunprepare+0xf0/0x110 <snip> Call trace: clkcoreunprepare+0xf0/0x110 (P) clkunprepare+0x2c/0x44 irisdisableunprepareclock+0x28/0x48 [qcomiris] irisvpupoweroffhw+0x48/0x58 [qcomiris] irisvpu33poweroffhardware+0x44/0x230 [qcomiris] irisvpupoweroff+0x34/0x84 [qcomiris] iriscoredeinit+0x44/0xc8 [qcomiris] irisremove+0x20/0x48 [qcomiris] platformremove+0x20/0x30 deviceremove+0x4c/0x80 <snip> ---[ end trace 0000000000000000 ]--- genpd genpd:0:aa00000.video-codec: Runtime PM usage count underflow! ------------[ cut here ]------------ gccvideoaxi0clk already disabled WARNING: drivers/clk/clk.c:1206 at clkcoredisable+0xa4/0xac, CPU#4: sh/542 <snip> pc : clkcoredisable+0xa4/0xac lr : clkcoredisable+0xa4/0xac <snip> Call trace: clkcoredisable+0xa4/0xac (P) clkdisable+0x30/0x4c irisdisableunprepareclock+0x20/0x48 [qcomiris] irisvpu33poweroffcontroller+0x17c/0x428 [qcomiris] irisvpupoweroff+0x48/0x84 [qcomiris] iriscoredeinit+0x44/0xc8 [qcomiris] irisremove+0x20/0x48 [qcomiris] platformremove+0x20/0x30 deviceremove+0x4c/0x80 <snip> ------------[ cut here ]------------ gccvideoaxi0clk already unprepared WARNING: drivers/clk/clk.c:1065 at clkcoreunprepare+0xf0/0x110, CPU#4: sh/542 <snip> pc : clkcoreunprepare+0xf0/0x110 lr : clkcoreunprepare+0xf0/0x110 <snip> Call trace: clkcoreunprepare+0xf0/0x110 (P) clkunprepare+0x2c/0x44 irisdisableunprepareclock+0x28/0x48 [qcomiris] irisvpu33poweroffcontroller+0x17c/0x428 [qcomiris] irisvpupoweroff+0x48/0x84 [qcomiris] iriscoredeinit+0x44/0xc8 [qcomiris] irisremove+0x20/0x48 [qcomiris] platformremove+0x20/0x30 deviceremove+0x4c/0x80 <snip> ---[ end trace 0000000000000000 ]---
Skip deinit if initialization never succeeded.