Skip to content

Commit 99c31f9

Browse files
committed
ucounts: In set_cred_ucounts assume new->ucounts is non-NULL
Any cred that is destined for use by commit_creds must have a non-NULL cred->ucounts field. Only curing credential construction is a NULL cred->ucounts valid. Only abort_creds, put_cred, and put_cred_rcu needs to deal with a cred with a NULL ucount. As set_cred_ucounts is non of those case don't confuse people by handling something that can not happen. Link: https://lkml.kernel.org/r/871r4irzds.fsf_-_@disp2133 Tested-by: Yu Zhao <[email protected]> Reviewed-by: Alexey Gladkov <[email protected]> Signed-off-by: "Eric W. Biederman" <[email protected]>
1 parent 5ebcbe3 commit 99c31f9

File tree

1 file changed

+2
-3
lines changed

1 file changed

+2
-3
lines changed

kernel/cred.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -676,15 +676,14 @@ int set_cred_ucounts(struct cred *new)
676676
* This optimization is needed because alloc_ucounts() uses locks
677677
* for table lookups.
678678
*/
679-
if (old_ucounts && old_ucounts->ns == new->user_ns && uid_eq(old_ucounts->uid, new->euid))
679+
if (old_ucounts->ns == new->user_ns && uid_eq(old_ucounts->uid, new->euid))
680680
return 0;
681681

682682
if (!(new_ucounts = alloc_ucounts(new->user_ns, new->euid)))
683683
return -EAGAIN;
684684

685685
new->ucounts = new_ucounts;
686-
if (old_ucounts)
687-
put_ucounts(old_ucounts);
686+
put_ucounts(old_ucounts);
688687

689688
return 0;
690689
}

0 commit comments

Comments
 (0)