]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.9-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 5 Oct 2021 06:42:57 +0000 (08:42 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 5 Oct 2021 06:42:57 +0000 (08:42 +0200)
added patches:
cred-allow-get_cred-and-put_cred-to-be-given-null.patch

queue-4.9/cred-allow-get_cred-and-put_cred-to-be-given-null.patch [new file with mode: 0644]
queue-4.9/series

diff --git a/queue-4.9/cred-allow-get_cred-and-put_cred-to-be-given-null.patch b/queue-4.9/cred-allow-get_cred-and-put_cred-to-be-given-null.patch
new file mode 100644 (file)
index 0000000..9950f89
--- /dev/null
@@ -0,0 +1,67 @@
+From f06bc03339ad4c1baa964a5f0606247ac1c3c50b Mon Sep 17 00:00:00 2001
+From: NeilBrown <neilb@suse.com>
+Date: Mon, 3 Dec 2018 11:30:30 +1100
+Subject: cred: allow get_cred() and put_cred() to be given NULL.
+
+From: NeilBrown <neilb@suse.com>
+
+commit f06bc03339ad4c1baa964a5f0606247ac1c3c50b upstream.
+
+It is common practice for helpers like this to silently,
+accept a NULL pointer.
+get_rpccred() and put_rpccred() used by NFS act this way
+and using the same interface will ease the conversion
+for NFS, and simplify the resulting code.
+
+Signed-off-by: NeilBrown <neilb@suse.com>
+Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
+Cc: Eric Dumazet <edumazet@google.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ include/linux/cred.h |   14 +++++++++-----
+ 1 file changed, 9 insertions(+), 5 deletions(-)
+
+--- a/include/linux/cred.h
++++ b/include/linux/cred.h
+@@ -234,7 +234,7 @@ static inline struct cred *get_new_cred(
+  * @cred: The credentials to reference
+  *
+  * Get a reference on the specified set of credentials.  The caller must
+- * release the reference.
++ * release the reference.  If %NULL is passed, it is returned with no action.
+  *
+  * This is used to deal with a committed set of credentials.  Although the
+  * pointer is const, this will temporarily discard the const and increment the
+@@ -245,6 +245,8 @@ static inline struct cred *get_new_cred(
+ static inline const struct cred *get_cred(const struct cred *cred)
+ {
+       struct cred *nonconst_cred = (struct cred *) cred;
++      if (!cred)
++              return cred;
+       validate_creds(cred);
+       nonconst_cred->non_rcu = 0;
+       return get_new_cred(nonconst_cred);
+@@ -255,7 +257,7 @@ static inline const struct cred *get_cre
+  * @cred: The credentials to release
+  *
+  * Release a reference to a set of credentials, deleting them when the last ref
+- * is released.
++ * is released.  If %NULL is passed, nothing is done.
+  *
+  * This takes a const pointer to a set of credentials because the credentials
+  * on task_struct are attached by const pointers to prevent accidental
+@@ -265,9 +267,11 @@ static inline void put_cred(const struct
+ {
+       struct cred *cred = (struct cred *) _cred;
+-      validate_creds(cred);
+-      if (atomic_dec_and_test(&(cred)->usage))
+-              __put_cred(cred);
++      if (cred) {
++              validate_creds(cred);
++              if (atomic_dec_and_test(&(cred)->usage))
++                      __put_cred(cred);
++      }
+ }
+ /**
index 7fe75cd3405afe4ec9a95f9e3c014d0ffc2db4a7..4c5efd470ed8fb3c2de88275d4b29ad8b2426898 100644 (file)
@@ -55,3 +55,4 @@ hid-betop-fix-slab-out-of-bounds-write-in-betop_probe.patch
 netfilter-ipset-fix-oversized-kvmalloc-calls.patch
 hid-usbhid-free-raw_report-buffers-in-usbhid_stop.patch
 net-mdiobus-fix-memory-leak-in-__mdiobus_register.patch
+cred-allow-get_cred-and-put_cred-to-be-given-null.patch