• Seiji Aguchi's avatar
    efi_pstore: Introducing workqueue updating sysfs · b28299b4
    Seiji Aguchi authored
    commit a93bc0c6 upstream.
    
    [Problem]
    efi_pstore creates sysfs entries, which enable users to access to NVRAM,
    in a write callback. If a kernel panic happens in an interrupt context,
    it may fail because it could sleep due to dynamic memory allocations during
    creating sysfs entries.
    
    [Patch Description]
    This patch removes sysfs operations from a write callback by introducing
    a workqueue updating sysfs entries which is scheduled after the write
    callback is called.
    
    Also, the workqueue is kicked in a just oops case.
    A system will go down in other cases such as panic, clean shutdown and emergency
    restart. And we don't need to create sysfs entries because there is no chance for
    users to access to them.
    
    efi_pstore will be robust against a kernel panic in an interrupt context with this patch.
    Signed-off-by: default avatarSeiji Aguchi <seiji.aguchi@hds.com>
    Acked-by: default avatarMatt Fleming <matt.fleming@intel.com>
    Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
    [xr: Backported to 3.4:
      - Adjust contest
      - Remove repeated definition of helper function variable_is_present]
    Signed-off-by: default avatarRui Xiang <rui.xiang@huawei.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    b28299b4
efivars.c 37.1 KB