aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/misc
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2018-09-26 21:06:46 -0400
committerDave Airlie <airlied@redhat.com>2018-09-26 21:06:46 -0400
commitbf78296ab1cb215d0609ac6cff4e43e941e51265 (patch)
treea193615b327d9ee538e71ca5f13bbfb4f3db4e6b /drivers/misc
parent18eb2f6e19d77900695987e3a2b775cccbe5b84e (diff)
parent6bf4ca7fbc85d80446ac01c0d1d77db4d91a6d84 (diff)
BackMerge v4.19-rc5 into drm-next
Sean Paul requested an -rc5 backmerge from some sun4i fixes. Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/misc')
-rw-r--r--drivers/misc/hmc6352.c2
-rw-r--r--drivers/misc/ibmvmc.c2
-rw-r--r--drivers/misc/mei/bus.c12
-rw-r--r--drivers/misc/mei/client.c2
-rw-r--r--drivers/misc/mei/hbm.c9
5 files changed, 15 insertions, 12 deletions
diff --git a/drivers/misc/hmc6352.c b/drivers/misc/hmc6352.c
index eeb7eef62174..38f90e179927 100644
--- a/drivers/misc/hmc6352.c
+++ b/drivers/misc/hmc6352.c
@@ -27,6 +27,7 @@
27#include <linux/err.h> 27#include <linux/err.h>
28#include <linux/delay.h> 28#include <linux/delay.h>
29#include <linux/sysfs.h> 29#include <linux/sysfs.h>
30#include <linux/nospec.h>
30 31
31static DEFINE_MUTEX(compass_mutex); 32static DEFINE_MUTEX(compass_mutex);
32 33
@@ -50,6 +51,7 @@ static int compass_store(struct device *dev, const char *buf, size_t count,
50 return ret; 51 return ret;
51 if (val >= strlen(map)) 52 if (val >= strlen(map))
52 return -EINVAL; 53 return -EINVAL;
54 val = array_index_nospec(val, strlen(map));
53 mutex_lock(&compass_mutex); 55 mutex_lock(&compass_mutex);
54 ret = compass_command(c, map[val]); 56 ret = compass_command(c, map[val]);
55 mutex_unlock(&compass_mutex); 57 mutex_unlock(&compass_mutex);
diff --git a/drivers/misc/ibmvmc.c b/drivers/misc/ibmvmc.c
index 8f82bb9d11e2..b8aaa684c397 100644
--- a/drivers/misc/ibmvmc.c
+++ b/drivers/misc/ibmvmc.c
@@ -2131,7 +2131,7 @@ static int ibmvmc_init_crq_queue(struct crq_server_adapter *adapter)
2131 retrc = plpar_hcall_norets(H_REG_CRQ, 2131 retrc = plpar_hcall_norets(H_REG_CRQ,
2132 vdev->unit_address, 2132 vdev->unit_address,
2133 queue->msg_token, PAGE_SIZE); 2133 queue->msg_token, PAGE_SIZE);
2134 retrc = rc; 2134 rc = retrc;
2135 2135
2136 if (rc == H_RESOURCE) 2136 if (rc == H_RESOURCE)
2137 rc = ibmvmc_reset_crq_queue(adapter); 2137 rc = ibmvmc_reset_crq_queue(adapter);
diff --git a/drivers/misc/mei/bus.c b/drivers/misc/mei/bus.c
index 7bba62a72921..fc3872fe7b25 100644
--- a/drivers/misc/mei/bus.c
+++ b/drivers/misc/mei/bus.c
@@ -521,17 +521,15 @@ int mei_cldev_enable(struct mei_cl_device *cldev)
521 521
522 cl = cldev->cl; 522 cl = cldev->cl;
523 523
524 mutex_lock(&bus->device_lock);
524 if (cl->state == MEI_FILE_UNINITIALIZED) { 525 if (cl->state == MEI_FILE_UNINITIALIZED) {
525 mutex_lock(&bus->device_lock);
526 ret = mei_cl_link(cl); 526 ret = mei_cl_link(cl);
527 mutex_unlock(&bus->device_lock);
528 if (ret) 527 if (ret)
529 return ret; 528 goto out;
530 /* update pointers */ 529 /* update pointers */
531 cl->cldev = cldev; 530 cl->cldev = cldev;
532 } 531 }
533 532
534 mutex_lock(&bus->device_lock);
535 if (mei_cl_is_connected(cl)) { 533 if (mei_cl_is_connected(cl)) {
536 ret = 0; 534 ret = 0;
537 goto out; 535 goto out;
@@ -616,9 +614,8 @@ int mei_cldev_disable(struct mei_cl_device *cldev)
616 if (err < 0) 614 if (err < 0)
617 dev_err(bus->dev, "Could not disconnect from the ME client\n"); 615 dev_err(bus->dev, "Could not disconnect from the ME client\n");
618 616
619out:
620 mei_cl_bus_module_put(cldev); 617 mei_cl_bus_module_put(cldev);
621 618out:
622 /* Flush queues and remove any pending read */ 619 /* Flush queues and remove any pending read */
623 mei_cl_flush_queues(cl, NULL); 620 mei_cl_flush_queues(cl, NULL);
624 mei_cl_unlink(cl); 621 mei_cl_unlink(cl);
@@ -876,12 +873,13 @@ static void mei_cl_bus_dev_release(struct device *dev)
876 873
877 mei_me_cl_put(cldev->me_cl); 874 mei_me_cl_put(cldev->me_cl);
878 mei_dev_bus_put(cldev->bus); 875 mei_dev_bus_put(cldev->bus);
876 mei_cl_unlink(cldev->cl);
879 kfree(cldev->cl); 877 kfree(cldev->cl);
880 kfree(cldev); 878 kfree(cldev);
881} 879}
882 880
883static const struct device_type mei_cl_device_type = { 881static const struct device_type mei_cl_device_type = {
884 .release = mei_cl_bus_dev_release, 882 .release = mei_cl_bus_dev_release,
885}; 883};
886 884
887/** 885/**
diff --git a/drivers/misc/mei/client.c b/drivers/misc/mei/client.c
index 4ab6251d418e..ebdcf0b450e2 100644
--- a/drivers/misc/mei/client.c
+++ b/drivers/misc/mei/client.c
@@ -1767,7 +1767,7 @@ out:
1767 } 1767 }
1768 } 1768 }
1769 1769
1770 rets = buf->size; 1770 rets = len;
1771err: 1771err:
1772 cl_dbg(dev, cl, "rpm: autosuspend\n"); 1772 cl_dbg(dev, cl, "rpm: autosuspend\n");
1773 pm_runtime_mark_last_busy(dev->dev); 1773 pm_runtime_mark_last_busy(dev->dev);
diff --git a/drivers/misc/mei/hbm.c b/drivers/misc/mei/hbm.c
index 09e233d4c0de..e56f3e72d57a 100644
--- a/drivers/misc/mei/hbm.c
+++ b/drivers/misc/mei/hbm.c
@@ -1161,15 +1161,18 @@ int mei_hbm_dispatch(struct mei_device *dev, struct mei_msg_hdr *hdr)
1161 1161
1162 props_res = (struct hbm_props_response *)mei_msg; 1162 props_res = (struct hbm_props_response *)mei_msg;
1163 1163
1164 if (props_res->status) { 1164 if (props_res->status == MEI_HBMS_CLIENT_NOT_FOUND) {
1165 dev_dbg(dev->dev, "hbm: properties response: %d CLIENT_NOT_FOUND\n",
1166 props_res->me_addr);
1167 } else if (props_res->status) {
1165 dev_err(dev->dev, "hbm: properties response: wrong status = %d %s\n", 1168 dev_err(dev->dev, "hbm: properties response: wrong status = %d %s\n",
1166 props_res->status, 1169 props_res->status,
1167 mei_hbm_status_str(props_res->status)); 1170 mei_hbm_status_str(props_res->status));
1168 return -EPROTO; 1171 return -EPROTO;
1172 } else {
1173 mei_hbm_me_cl_add(dev, props_res);
1169 } 1174 }
1170 1175
1171 mei_hbm_me_cl_add(dev, props_res);
1172
1173 /* request property for the next client */ 1176 /* request property for the next client */
1174 if (mei_hbm_prop_req(dev, props_res->me_addr + 1)) 1177 if (mei_hbm_prop_req(dev, props_res->me_addr + 1))
1175 return -EIO; 1178 return -EIO;