• Huang Ying's avatar
    cxl/region: Fix a race condition in memory hotplug notifier · a3483ee7
    Huang Ying authored
    In the memory hotplug notifier function of the CXL region,
    cxl_region_perf_attrs_callback(), the node ID is obtained by checking
    the host address range of the region. However, the address range
    information is not available when the region is registered in
    devm_cxl_add_region(). Additionally, this information may be removed
    or added under the protection of cxl_region_rwsem during runtime. If
    the memory notifier is called for nodes other than that backed by the
    region, a race condition may occur, potentially leading to a NULL
    dereference or an invalid address range.
    
    The race condition is addressed by checking the availability of the
    address range information under the protection of cxl_region_rwsem. To
    enhance code readability and use guard(), the relevant code has been
    moved into a newly added function: cxl_region_nid().
    
    Fixes: 067353a4 ("cxl/region: Add memory hotplug notifier for cxl region")
    Signed-off-by: default avatarHuang, Ying <ying.huang@intel.com>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Alison Schofield <alison.schofield@intel.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Cc: Dave Jiang <dave.jiang@intel.com>
    Cc: Bharata B Rao <bharata@amd.com>
    Cc: Alistair Popple <apopple@nvidia.com>
    Cc: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Vishal Verma <vishal.l.verma@intel.com>
    Cc: Ira Weiny <ira.weiny@intel.com>
    Reviewed-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
    Link: https://patch.msgid.link/20240618084639.1419629-2-ying.huang@intel.comSigned-off-by: default avatarDave Jiang <dave.jiang@intel.com>
    a3483ee7
region.c 82.8 KB