You need to sign in or sign up before continuing.
  • Matthew Wilcox (Oracle)'s avatar
    secretmem: Prevent secretmem_users from wrapping to zero · cb685432
    Matthew Wilcox (Oracle) authored
    Commit 11086054 ("mm/secretmem: use refcount_t instead of atomic_t")
    attempted to fix the problem of secretmem_users wrapping to zero and
    allowing suspend once again.
    
    But it was reverted in commit 87066fdd
    
     ("Revert 'mm/secretmem: use
    refcount_t instead of atomic_t'") because of the problems it caused - a
    refcount_t was not semantically the right type to use.
    
    Instead prevent secretmem_users from wrapping to zero by forbidding new
    users if the number of users has wrapped from positive to negative.
    This stops a long way short of reaching the necessary 4 billion users
    where it wraps to zero again, so there's no need to be clever with
    special anti-wrap types or checking the return value from atomic_inc().
    Signed-off-by: default avatarMatthew Wilcox (Oracle) <willy@infradead.org>
    Cc: Jordy Zomer <jordy@pwning.systems>
    Cc: Kees Cook <keescook@chromium.org>,
    Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
    Cc: Mike Rapoport <rppt@kernel.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    cb685432
secretmem.c 5.54 KB