summaryrefslogtreecommitdiffstats
path: root/drivers/infiniband
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2017-07-08 02:06:28 +0200
committerLinus Torvalds <torvalds@linux-foundation.org>2017-07-08 02:06:28 +0200
commita7d4026834f8263a8a4eabeb753e3747988ef0d2 (patch)
tree5204ced6419a70d8539318fd20098e8e733f4213 /drivers/infiniband
parentMerge tag 'kbuild-thinar-v4.13' of git://git.kernel.org/pub/scm/linux/kernel/... (diff)
parentIB/core: Fix static analysis warning in ib_policy_change_task (diff)
downloadlinux-a7d4026834f8263a8a4eabeb753e3747988ef0d2.tar.xz
linux-a7d4026834f8263a8a4eabeb753e3747988ef0d2.zip
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security
Pull security layer fixes from James Morris: "Bugfixes for TPM and SELinux" * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security: IB/core: Fix static analysis warning in ib_policy_change_task IB/core: Fix uninitialized variable use in check_qp_port_pkey_settings tpm: do not suspend/resume if power stays on tpm: use tpm2_pcr_read() in tpm2_do_selftest() tpm: use tpm_buf functions in tpm2_pcr_read() tpm_tis: make ilb_base_addr static tpm: consolidate the TPM startup code tpm: Enable CLKRUN protocol for Braswell systems tpm/tpm_crb: fix priv->cmd_size initialisation tpm: fix a kernel memory leak in tpm-sysfs.c tpm: Issue a TPM2_Shutdown for TPM2 devices. Add "shutdown" to "struct class".
Diffstat (limited to 'drivers/infiniband')
-rw-r--r--drivers/infiniband/core/device.c3
-rw-r--r--drivers/infiniband/core/security.c20
2 files changed, 14 insertions, 9 deletions
diff --git a/drivers/infiniband/core/device.c b/drivers/infiniband/core/device.c
index 631eaa9daf65..a5dfab6adf49 100644
--- a/drivers/infiniband/core/device.c
+++ b/drivers/infiniband/core/device.c
@@ -376,7 +376,8 @@ static void ib_policy_change_task(struct work_struct *work)
WARN_ONCE(ret,
"ib_get_cached_subnet_prefix err: %d, this should never happen here\n",
ret);
- ib_security_cache_change(dev, i, sp);
+ if (!ret)
+ ib_security_cache_change(dev, i, sp);
}
}
up_read(&lists_rwsem);
diff --git a/drivers/infiniband/core/security.c b/drivers/infiniband/core/security.c
index 3e8c38953912..70ad19c4c73e 100644
--- a/drivers/infiniband/core/security.c
+++ b/drivers/infiniband/core/security.c
@@ -120,21 +120,25 @@ static int check_qp_port_pkey_settings(struct ib_ports_pkeys *pps,
return 0;
if (pps->main.state != IB_PORT_PKEY_NOT_VALID) {
- get_pkey_and_subnet_prefix(&pps->main,
- &pkey,
- &subnet_prefix);
+ ret = get_pkey_and_subnet_prefix(&pps->main,
+ &pkey,
+ &subnet_prefix);
+ if (ret)
+ return ret;
ret = enforce_qp_pkey_security(pkey,
subnet_prefix,
sec);
+ if (ret)
+ return ret;
}
- if (ret)
- return ret;
if (pps->alt.state != IB_PORT_PKEY_NOT_VALID) {
- get_pkey_and_subnet_prefix(&pps->alt,
- &pkey,
- &subnet_prefix);
+ ret = get_pkey_and_subnet_prefix(&pps->alt,
+ &pkey,
+ &subnet_prefix);
+ if (ret)
+ return ret;
ret = enforce_qp_pkey_security(pkey,
subnet_prefix,