1. 18 Oct, 2021 1 commit
    • Eric W. Biederman's avatar
      ucounts: Fix signal ucount refcounting · 15bc01ef
      Eric W. Biederman authored
      In commit fda31c50 ("signal: avoid double atomic counter
      increments for user accounting") Linus made a clever optimization to
      how rlimits and the struct user_struct.  Unfortunately that
      optimization does not work in the obvious way when moved to nested
      rlimits.  The problem is that the last decrement of the per user
      namespace per user sigpending counter might also be the last decrement
      of the sigpending counter in the parent user namespace as well.  Which
      means that simply freeing the leaf ucount in __free_sigqueue is not
      enough.
      
      Maintain the optimization and handle the tricky cases by introducing
      inc_rlimit_get_ucounts and dec_rlimit_put_ucounts.
      
      By moving the entire optimization into functions that perform all of
      the work it becomes possible to ensure that every level is handled
      properly.
      
      The new function inc_rlimit_get_ucounts returns 0 on failure to
      increment the ucount.  This is different than inc_rlimit_ucounts which
      increments the ucounts and returns LONG_MAX if the ucount counter has
      exceeded it's maximum or it wrapped (to indicate the counter needs to
      decremented).
      
      I wish we had a single user to account all pending signals to across
      all of the threads of a process so this complexity was not necessary
      
      Cc: stable@vger.kernel.org
      Fixes: d6469690 ("Reimplement RLIMIT_SIGPENDING on top of ucounts")
      v1: https://lkml.kernel.org/r/87mtnavszx.fsf_-_@disp2133
      Link: https://lkml.kernel.org/r/87fssytizw.fsf_-_@disp2133Reviewed-by: default avatarAlexey Gladkov <legion@kernel.org>
      Tested-by: default avatarRune Kleveland <rune.kleveland@infomedia.dk>
      Tested-by: default avatarYu Zhao <yuzhao@google.com>
      Tested-by: default avatarJordan Glover <Golden_Miller83@protonmail.ch>
      Signed-off-by: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
      15bc01ef
  2. 29 Aug, 2021 8 commits
  3. 28 Aug, 2021 3 commits
  4. 27 Aug, 2021 18 commits
  5. 26 Aug, 2021 10 commits