• Krzysztof Kozlowski's avatar
    cpufreq: qcom-cpufreq-hw: fix double IO unmap and resource release on exit · ba5e770c
    Krzysztof Kozlowski authored
    Commit 054a3ef6 ("cpufreq: qcom-hw: Allocate qcom_cpufreq_data
    during probe") moved getting memory resource and iomap from
    qcom_cpufreq_hw_cpu_init() to the probe function, however it left
    untouched cleanup in qcom_cpufreq_hw_cpu_exit().
    
    During device unbind this will lead to doule release of resource and
    double iounmap(), first by qcom_cpufreq_hw_cpu_exit() and second via
    managed resources:
    
      resource: Trying to free nonexistent resource <0x0000000018593000-0x0000000018593fff>
      Trying to vunmap() nonexistent vm area (0000000088a7d4dc)
      ...
      vunmap (mm/vmalloc.c:2771 (discriminator 1))
      iounmap (mm/ioremap.c:60)
      devm_ioremap_release (lib/devres.c:19)
      devres_release_all (drivers/base/devres.c:506 drivers/base/devres.c:535)
      device_unbind_cleanup (drivers/base/dd.c:523)
      device_release_driver_internal (drivers/base/dd.c:1248 drivers/base/dd.c:1263)
      device_driver_detach (drivers/base/dd.c:1300)
      unbind_store (drivers/base/bus.c:243)
      drv_attr_store (drivers/base/bus.c:127)
      sysfs_kf_write (fs/sysfs/file.c:137)
      kernfs_fop_write_iter (fs/kernfs/file.c:334)
      vfs_write (include/linux/fs.h:1851 fs/read_write.c:491 fs/read_write.c:584)
      ksys_write (fs/read_write.c:637)
      __arm64_sys_write (fs/read_write.c:646)
      invoke_syscall (arch/arm64/include/asm/current.h:19 arch/arm64/kernel/syscall.c:57)
      el0_svc_common.constprop.0 (arch/arm64/include/asm/daifflags.h:28 arch/arm64/kernel/syscall.c:150)
      do_el0_svc (arch/arm64/kernel/syscall.c:194)
      el0_svc (arch/arm64/include/asm/daifflags.h:28 arch/arm64/kernel/entry-common.c:133 arch/arm64/kernel/entry-common.c:142 arch/arm64/kernel/entry-common.c:638)
      el0t_64_sync_handler (arch/arm64/kernel/entry-common.c:656)
      el0t_64_sync (arch/arm64/kernel/entry.S:591)
    
    Fixes: 054a3ef6 ("cpufreq: qcom-hw: Allocate qcom_cpufreq_data during probe")
    Cc: <stable@vger.kernel.org>
    Cc: Manivannan Sadhasivam <mani@kernel.org>
    Signed-off-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Reviewed-by: default avatarManivannan Sadhasivam <mani@kernel.org>
    Reviewed-by: default avatarBjorn Andersson <andersson@kernel.org>
    Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
    ba5e770c
qcom-cpufreq-hw.c 19.7 KB