• Ashutosh Dixit's avatar
    drm/i915/hwmon: Get rid of devm · 5bc9de06
    Ashutosh Dixit authored
    When both hwmon and hwmon drvdata (on which hwmon depends) are device
    managed resources, the expectation, on device unbind, is that hwmon will be
    released before drvdata. However, in i915 there are two separate code
    paths, which both release either drvdata or hwmon and either can be
    released before the other. These code paths (for device unbind) are as
    follows (see also the bug referenced below):
    
    Call Trace:
    release_nodes+0x11/0x70
    devres_release_group+0xb2/0x110
    component_unbind_all+0x8d/0xa0
    component_del+0xa5/0x140
    intel_pxp_tee_component_fini+0x29/0x40 [i915]
    intel_pxp_fini+0x33/0x80 [i915]
    i915_driver_remove+0x4c/0x120 [i915]
    i915_pci_remove+0x19/0x30 [i915]
    pci_device_remove+0x32/0xa0
    device_release_driver_internal+0x19c/0x200
    unbind_store+0x9c/0xb0
    
    and
    
    Call Trace:
    release_nodes+0x11/0x70
    devres_release_all+0x8a/0xc0
    device_unbind_cleanup+0x9/0x70
    device_release_driver_internal+0x1c1/0x200
    unbind_store+0x9c/0xb0
    
    This means that in i915, if use devm, we cannot gurantee that hwmon will
    always be released before drvdata. Which means that we have a uaf if hwmon
    sysfs is accessed when drvdata has been released but hwmon hasn't.
    
    The only way out of this seems to be do get rid of devm_ and release/free
    everything explicitly during device unbind.
    
    v2: Change commit message and other minor code changes
    v3: Cleanup from i915_hwmon_register on error (Armin Wolf)
    v4: Eliminate potential static analyzer warning (Rodrigo)
        Eliminate fetch_and_zero (Jani)
    v5: Restore previous logic for ddat_gt->hwmon_dev error return (Andi)
    
    Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/10366Reviewed-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: default avatarAshutosh Dixit <ashutosh.dixit@intel.com>
    Reviewed-by: default avatarAndi Shyti <andi.shyti@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20240417145646.793223-1-ashutosh.dixit@intel.com
    5bc9de06
i915_hwmon.c 22 KB