• Cristian Marussi's avatar
    pmdomain: arm: Fix NULL dereference on scmi_perf_domain removal · eb5555d4
    Cristian Marussi authored
    On unloading of the scmi_perf_domain module got the below splat, when in
    the DT provided to the system under test the '#power-domain-cells' property
    was missing. Indeed, this particular setup causes the probe to bail out
    early without giving any error, which leads to the ->remove() callback gets
    to run too, but without all the expected initialized structures in place.
    
    Add a check and bail out early on remove too.
    
     Call trace:
      scmi_perf_domain_remove+0x28/0x70 [scmi_perf_domain]
      scmi_dev_remove+0x28/0x40 [scmi_core]
      device_remove+0x54/0x90
      device_release_driver_internal+0x1dc/0x240
      driver_detach+0x58/0xa8
      bus_remove_driver+0x78/0x108
      driver_unregister+0x38/0x70
      scmi_driver_unregister+0x28/0x180 [scmi_core]
      scmi_perf_domain_driver_exit+0x18/0xb78 [scmi_perf_domain]
      __arm64_sys_delete_module+0x1a8/0x2c0
      invoke_syscall+0x50/0x128
      el0_svc_common.constprop.0+0x48/0xf0
      do_el0_svc+0x24/0x38
      el0_svc+0x34/0xb8
      el0t_64_sync_handler+0x100/0x130
      el0t_64_sync+0x190/0x198
     Code: a90153f3 f9403c14 f9414800 955f8a05 (b9400a80)
     ---[ end trace 0000000000000000 ]---
    
    Fixes: 2af23ceb ("pmdomain: arm: Add the SCMI performance domain")
    Signed-off-by: default avatarCristian Marussi <cristian.marussi@arm.com>
    Reviewed-by: default avatarSudeep Holla <sudeep.holla@arm.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20240125191756.868860-1-cristian.marussi@arm.comSigned-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    eb5555d4
scmi_perf_domain.c 4.55 KB