Documentation: security/credentials.rst: explain need to sort group_list
authorNeilBrown <neilb@suse.com>
Tue, 2 Jan 2018 21:01:15 +0000 (08:01 +1100)
committerJonathan Corbet <corbet@lwn.net>
Mon, 8 Jan 2018 21:20:31 +0000 (14:20 -0700)
This patch updates the documentation with the observations that led
to commit bdcf0a423ea1 ("kernel: make groups_sort calling a
responsibility group_info allocators") and the new behaviour required.
Specifically that groups_sort() should be called on a new group_list
before set_groups() or set_current_groups() is called.

Signed-off-by: NeilBrown <neilb@suse.com>
[jc: use proper :c:func: references]
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
Documentation/security/credentials.rst

index 66a2e24939d808896f11874c358b10c1dd894c7b..5bb7125faeee24873e93e5aa6d05db9c5f8d3eb5 100644 (file)
@@ -451,6 +451,13 @@ checks and hooks done.  Both the current and the proposed sets of credentials
 are available for this purpose as current_cred() will return the current set
 still at this point.
 
+When replacing the group list, the new list must be sorted before it
+is added to the credential, as a binary search is used to test for
+membership.  In practice, this means :c:func:`groups_sort` should be
+called before :c:func:`set_groups` or :c:func:`set_current_groups`.
+:c:func:`groups_sort)` must not be called on a ``struct group_list`` which
+is shared as it may permute elements as part of the sorting process
+even if the array is already sorted.
 
 When the credential set is ready, it should be committed to the current process
 by calling::