• Dan Williams's avatar
    cxl/memdev: Fix sanitize vs decoder setup locking · 33981838
    Dan Williams authored
    The sanitize operation is destructive and the expectation is that the
    device is unmapped while in progress. The current implementation does a
    lockless check for decoders being active, but then does nothing to
    prevent decoders from racing to be committed. Introduce state tracking
    to resolve this race.
    
    This incidentally cleans up unpriveleged userspace from triggering mmio
    read cycles by spinning on reading the 'security/state' attribute. Which
    at a minimum is a waste since the kernel state machine can cache the
    completion result.
    
    Lastly cxl_mem_sanitize() was mistakenly marked EXPORT_SYMBOL() in the
    original implementation, but an export was never required.
    
    Fixes: 0c36b6ad ("cxl/mbox: Add sanitization handling machinery")
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Reviewed-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
    Reviewed-by: default avatarDavidlohr Bueso <dave@stgolabs.net>
    Reviewed-by: default avatarDave Jiang <dave.jiang@intel.com>
    Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
    33981838
mbox.c 37.5 KB