• Dmitry Kasatkin's avatar
    ima: use atomic bit operations to protect policy update interface · 0716abbb
    Dmitry Kasatkin authored
    The current implementation uses an atomic counter to provide exclusive
    access to the sysfs 'policy' entry to update the IMA policy. While it is
    highly unlikely, the usage of a counter might potentially allow another
    process to overflow the counter, open the interface and insert additional
    rules into the policy being loaded.
    
    This patch replaces using an atomic counter with atomic bit operations
    which is more reliable and a widely used method to provide exclusive access.
    
    As bit operation keep the interface locked after successful update, it makes
    it unnecessary to verify if the default policy was set or not during parsing
    and interface closing. This patch also removes that code.
    
    Changes in v3:
    * move audit log message to ima_relead_policy() to report successful and
      unsuccessful result
    * unnecessary comment removed
    
    Changes in v2:
    * keep interface locked after successful policy load as in original design
    * remove sysfs entry as in original design
    Signed-off-by: default avatarDmitry Kasatkin <d.kasatkin@samsung.com>
    Signed-off-by: default avatarMimi Zohar <zohar@linux.vnet.ibm.com>
    0716abbb
ima_policy.c 19 KB