--- /dev/null
+From e8f71f89236ef82d449991bfbc237e3cb6ea584f Mon Sep 17 00:00:00 2001
+From: Guenter Roeck <linux@roeck-us.net>
+Date: Wed, 8 Sep 2021 12:08:17 -0700
+Subject: drm/nouveau/nvkm: Replace -ENOSYS with -ENODEV
+
+From: Guenter Roeck <linux@roeck-us.net>
+
+commit e8f71f89236ef82d449991bfbc237e3cb6ea584f upstream.
+
+nvkm test builds fail with the following error.
+
+ drivers/gpu/drm/nouveau/nvkm/engine/device/ctrl.c: In function 'nvkm_control_mthd_pstate_info':
+ drivers/gpu/drm/nouveau/nvkm/engine/device/ctrl.c:60:35: error: overflow in conversion from 'int' to '__s8' {aka 'signed char'} changes value from '-251' to '5'
+
+The code builds on most architectures, but fails on parisc where ENOSYS
+is defined as 251.
+
+Replace the error code with -ENODEV (-19). The actual error code does
+not really matter and is not passed to userspace - it just has to be
+negative.
+
+Fixes: 7238eca4cf18 ("drm/nouveau: expose pstate selection per-power source in sysfs")
+Signed-off-by: Guenter Roeck <linux@roeck-us.net>
+Cc: Ben Skeggs <bskeggs@redhat.com>
+Cc: David Airlie <airlied@linux.ie>
+Cc: Daniel Vetter <daniel@ffwll.ch>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/nouveau/nvkm/engine/device/ctrl.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/nouveau/nvkm/engine/device/ctrl.c
++++ b/drivers/gpu/drm/nouveau/nvkm/engine/device/ctrl.c
+@@ -57,7 +57,7 @@ nvkm_control_mthd_pstate_info(struct nvk
+ args->v0.count = 0;
+ args->v0.ustate_ac = NVIF_CONTROL_PSTATE_INFO_V0_USTATE_DISABLE;
+ args->v0.ustate_dc = NVIF_CONTROL_PSTATE_INFO_V0_USTATE_DISABLE;
+- args->v0.pwrsrc = -ENOSYS;
++ args->v0.pwrsrc = -ENODEV;
+ args->v0.pstate = NVIF_CONTROL_PSTATE_INFO_V0_PSTATE_UNKNOWN;
+ }
+
--- /dev/null
+From a3727a8bac0a9e77c70820655fd8715523ba3db7 Mon Sep 17 00:00:00 2001
+From: Paul Moore <paul@paul-moore.com>
+Date: Thu, 23 Sep 2021 09:50:11 -0400
+Subject: selinux,smack: fix subjective/objective credential use mixups
+
+From: Paul Moore <paul@paul-moore.com>
+
+commit a3727a8bac0a9e77c70820655fd8715523ba3db7 upstream.
+
+Jann Horn reported a problem with commit eb1231f73c4d ("selinux:
+clarify task subjective and objective credentials") where some LSM
+hooks were attempting to access the subjective credentials of a task
+other than the current task. Generally speaking, it is not safe to
+access another task's subjective credentials and doing so can cause
+a number of problems.
+
+Further, while looking into the problem, I realized that Smack was
+suffering from a similar problem brought about by a similar commit
+1fb057dcde11 ("smack: differentiate between subjective and objective
+task credentials").
+
+This patch addresses this problem by restoring the use of the task's
+objective credentials in those cases where the task is other than the
+current executing task. Not only does this resolve the problem
+reported by Jann, it is arguably the correct thing to do in these
+cases.
+
+Cc: stable@vger.kernel.org
+Fixes: eb1231f73c4d ("selinux: clarify task subjective and objective credentials")
+Fixes: 1fb057dcde11 ("smack: differentiate between subjective and objective task credentials")
+Reported-by: Jann Horn <jannh@google.com>
+Acked-by: Eric W. Biederman <ebiederm@xmission.com>
+Acked-by: Casey Schaufler <casey@schaufler-ca.com>
+Signed-off-by: Paul Moore <paul@paul-moore.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ security/selinux/hooks.c | 4 ++--
+ security/smack/smack_lsm.c | 4 ++--
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+--- a/security/selinux/hooks.c
++++ b/security/selinux/hooks.c
+@@ -2155,7 +2155,7 @@ static int selinux_ptrace_access_check(s
+ static int selinux_ptrace_traceme(struct task_struct *parent)
+ {
+ return avc_has_perm(&selinux_state,
+- task_sid_subj(parent), task_sid_obj(current),
++ task_sid_obj(parent), task_sid_obj(current),
+ SECCLASS_PROCESS, PROCESS__PTRACE, NULL);
+ }
+
+@@ -6218,7 +6218,7 @@ static int selinux_msg_queue_msgrcv(stru
+ struct ipc_security_struct *isec;
+ struct msg_security_struct *msec;
+ struct common_audit_data ad;
+- u32 sid = task_sid_subj(target);
++ u32 sid = task_sid_obj(target);
+ int rc;
+
+ isec = selinux_ipc(msq);
+--- a/security/smack/smack_lsm.c
++++ b/security/smack/smack_lsm.c
+@@ -2016,7 +2016,7 @@ static int smk_curacc_on_task(struct tas
+ const char *caller)
+ {
+ struct smk_audit_info ad;
+- struct smack_known *skp = smk_of_task_struct_subj(p);
++ struct smack_known *skp = smk_of_task_struct_obj(p);
+ int rc;
+
+ smk_ad_init(&ad, caller, LSM_AUDIT_DATA_TASK);
+@@ -3480,7 +3480,7 @@ static void smack_d_instantiate(struct d
+ */
+ static int smack_getprocattr(struct task_struct *p, char *name, char **value)
+ {
+- struct smack_known *skp = smk_of_task_struct_subj(p);
++ struct smack_known *skp = smk_of_task_struct_obj(p);
+ char *cp;
+ int slen;
+