diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2018-04-27 13:39:38 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2018-04-27 13:39:38 -0400 |
| commit | d8a332730e757129e70675679f2b2a03f1ecf65e (patch) | |
| tree | 90f955d200bd6837eea81f14dad543ba5140fdd0 | |
| parent | ee3748be5c18db11f17baebf50405bbebeb85471 (diff) | |
| parent | 6a7228d90d42bcacfe38786756ba62762b91c20a (diff) | |
Merge tag 'char-misc-4.17-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc
Pull char/misc driver fixes from Greg KH:
"Here are some small char and misc driver fixes for 4.17-rc3
A variety of small things that have fallen out after 4.17-rc1 was out.
Some vboxguest fixes for systems with lots of memory, amba bus fixes,
some MAINTAINERS updates, uio_hv_generic driver fixes, and a few other
minor things that resolve problems that people reported.
The amba bus fixes took twice to get right, the first time I messed up
applying the patches in the wrong order, hence the revert and later
addition again with the correct fix, sorry about that.
All of these have been in linux-next with no reported issues"
* tag 'char-misc-4.17-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
ARM: amba: Fix race condition with driver_override
ARM: amba: Make driver_override output consistent with other buses
Revert "ARM: amba: Fix race condition with driver_override"
ARM: amba: Don't read past the end of sysfs "driver_override" buffer
ARM: amba: Fix race condition with driver_override
virt: vbox: Log an error when we fail to get the host version
virt: vbox: Use __get_free_pages instead of kmalloc for DMA32 memory
virt: vbox: Add vbg_req_free() helper function
virt: vbox: Move declarations of vboxguest private functions to private header
slimbus: Fix out-of-bounds access in slim_slicesize()
MAINTAINERS: add dri-devel&linaro-mm for Android ION
fpga-manager: altera-ps-spi: preserve nCONFIG state
MAINTAINERS: update my email address
uio_hv_generic: fix subchannel ring mmap
uio_hv_generic: use correct channel in isr
uio_hv_generic: make ring buffer attribute for primary channel
uio_hv_generic: set size of ring buffer attribute
ANDROID: binder: prevent transactions into own process.
| -rw-r--r-- | MAINTAINERS | 6 | ||||
| -rw-r--r-- | drivers/amba/bus.c | 17 | ||||
| -rw-r--r-- | drivers/android/binder.c | 8 | ||||
| -rw-r--r-- | drivers/fpga/altera-ps-spi.c | 2 | ||||
| -rw-r--r-- | drivers/slimbus/messaging.c | 2 | ||||
| -rw-r--r-- | drivers/uio/uio_hv_generic.c | 72 | ||||
| -rw-r--r-- | drivers/virt/vboxguest/vboxguest_core.c | 70 | ||||
| -rw-r--r-- | drivers/virt/vboxguest/vboxguest_core.h | 9 | ||||
| -rw-r--r-- | drivers/virt/vboxguest/vboxguest_linux.c | 19 | ||||
| -rw-r--r-- | drivers/virt/vboxguest/vboxguest_utils.c | 17 | ||||
| -rw-r--r-- | include/linux/vbox_utils.h | 23 |
11 files changed, 124 insertions, 121 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index 1901ef510b43..3e41e12a88a4 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
| @@ -905,6 +905,8 @@ ANDROID ION DRIVER | |||
| 905 | M: Laura Abbott <labbott@redhat.com> | 905 | M: Laura Abbott <labbott@redhat.com> |
| 906 | M: Sumit Semwal <sumit.semwal@linaro.org> | 906 | M: Sumit Semwal <sumit.semwal@linaro.org> |
| 907 | L: devel@driverdev.osuosl.org | 907 | L: devel@driverdev.osuosl.org |
| 908 | L: dri-devel@lists.freedesktop.org | ||
| 909 | L: linaro-mm-sig@lists.linaro.org (moderated for non-subscribers) | ||
| 908 | S: Supported | 910 | S: Supported |
| 909 | F: drivers/staging/android/ion | 911 | F: drivers/staging/android/ion |
| 910 | F: drivers/staging/android/uapi/ion.h | 912 | F: drivers/staging/android/uapi/ion.h |
| @@ -13953,7 +13955,7 @@ THUNDERBOLT DRIVER | |||
| 13953 | M: Andreas Noever <andreas.noever@gmail.com> | 13955 | M: Andreas Noever <andreas.noever@gmail.com> |
| 13954 | M: Michael Jamet <michael.jamet@intel.com> | 13956 | M: Michael Jamet <michael.jamet@intel.com> |
| 13955 | M: Mika Westerberg <mika.westerberg@linux.intel.com> | 13957 | M: Mika Westerberg <mika.westerberg@linux.intel.com> |
| 13956 | M: Yehezkel Bernat <yehezkel.bernat@intel.com> | 13958 | M: Yehezkel Bernat <YehezkelShB@gmail.com> |
| 13957 | T: git git://git.kernel.org/pub/scm/linux/kernel/git/westeri/thunderbolt.git | 13959 | T: git git://git.kernel.org/pub/scm/linux/kernel/git/westeri/thunderbolt.git |
| 13958 | S: Maintained | 13960 | S: Maintained |
| 13959 | F: Documentation/admin-guide/thunderbolt.rst | 13961 | F: Documentation/admin-guide/thunderbolt.rst |
| @@ -13963,7 +13965,7 @@ F: include/linux/thunderbolt.h | |||
| 13963 | THUNDERBOLT NETWORK DRIVER | 13965 | THUNDERBOLT NETWORK DRIVER |
| 13964 | M: Michael Jamet <michael.jamet@intel.com> | 13966 | M: Michael Jamet <michael.jamet@intel.com> |
| 13965 | M: Mika Westerberg <mika.westerberg@linux.intel.com> | 13967 | M: Mika Westerberg <mika.westerberg@linux.intel.com> |
| 13966 | M: Yehezkel Bernat <yehezkel.bernat@intel.com> | 13968 | M: Yehezkel Bernat <YehezkelShB@gmail.com> |
| 13967 | L: netdev@vger.kernel.org | 13969 | L: netdev@vger.kernel.org |
| 13968 | S: Maintained | 13970 | S: Maintained |
| 13969 | F: drivers/net/thunderbolt.c | 13971 | F: drivers/net/thunderbolt.c |
diff --git a/drivers/amba/bus.c b/drivers/amba/bus.c index 594c228d2f02..4a3ac31c07d0 100644 --- a/drivers/amba/bus.c +++ b/drivers/amba/bus.c | |||
| @@ -69,11 +69,12 @@ static ssize_t driver_override_show(struct device *_dev, | |||
| 69 | struct device_attribute *attr, char *buf) | 69 | struct device_attribute *attr, char *buf) |
| 70 | { | 70 | { |
| 71 | struct amba_device *dev = to_amba_device(_dev); | 71 | struct amba_device *dev = to_amba_device(_dev); |
| 72 | ssize_t len; | ||
| 72 | 73 | ||
| 73 | if (!dev->driver_override) | 74 | device_lock(_dev); |
| 74 | return 0; | 75 | len = sprintf(buf, "%s\n", dev->driver_override); |
| 75 | 76 | device_unlock(_dev); | |
| 76 | return sprintf(buf, "%s\n", dev->driver_override); | 77 | return len; |
| 77 | } | 78 | } |
| 78 | 79 | ||
| 79 | static ssize_t driver_override_store(struct device *_dev, | 80 | static ssize_t driver_override_store(struct device *_dev, |
| @@ -81,9 +82,10 @@ static ssize_t driver_override_store(struct device *_dev, | |||
| 81 | const char *buf, size_t count) | 82 | const char *buf, size_t count) |
| 82 | { | 83 | { |
| 83 | struct amba_device *dev = to_amba_device(_dev); | 84 | struct amba_device *dev = to_amba_device(_dev); |
| 84 | char *driver_override, *old = dev->driver_override, *cp; | 85 | char *driver_override, *old, *cp; |
| 85 | 86 | ||
| 86 | if (count > PATH_MAX) | 87 | /* We need to keep extra room for a newline */ |
| 88 | if (count >= (PAGE_SIZE - 1)) | ||
| 87 | return -EINVAL; | 89 | return -EINVAL; |
| 88 | 90 | ||
| 89 | driver_override = kstrndup(buf, count, GFP_KERNEL); | 91 | driver_override = kstrndup(buf, count, GFP_KERNEL); |
| @@ -94,12 +96,15 @@ static ssize_t driver_override_store(struct device *_dev, | |||
| 94 | if (cp) | 96 | if (cp) |
| 95 | *cp = '\0'; | 97 | *cp = '\0'; |
| 96 | 98 | ||
| 99 | device_lock(_dev); | ||
| 100 | old = dev->driver_override; | ||
| 97 | if (strlen(driver_override)) { | 101 | if (strlen(driver_override)) { |
| 98 | dev->driver_override = driver_override; | 102 | dev->driver_override = driver_override; |
| 99 | } else { | 103 | } else { |
| 100 | kfree(driver_override); | 104 | kfree(driver_override); |
| 101 | dev->driver_override = NULL; | 105 | dev->driver_override = NULL; |
| 102 | } | 106 | } |
| 107 | device_unlock(_dev); | ||
| 103 | 108 | ||
| 104 | kfree(old); | 109 | kfree(old); |
| 105 | 110 | ||
diff --git a/drivers/android/binder.c b/drivers/android/binder.c index 764b63a5aade..e578eee31589 100644 --- a/drivers/android/binder.c +++ b/drivers/android/binder.c | |||
| @@ -2839,6 +2839,14 @@ static void binder_transaction(struct binder_proc *proc, | |||
| 2839 | else | 2839 | else |
| 2840 | return_error = BR_DEAD_REPLY; | 2840 | return_error = BR_DEAD_REPLY; |
| 2841 | mutex_unlock(&context->context_mgr_node_lock); | 2841 | mutex_unlock(&context->context_mgr_node_lock); |
| 2842 | if (target_node && target_proc == proc) { | ||
| 2843 | binder_user_error("%d:%d got transaction to context manager from process owning it\n", | ||
| 2844 | proc->pid, thread->pid); | ||
| 2845 | return_error = BR_FAILED_REPLY; | ||
| 2846 | return_error_param = -EINVAL; | ||
| 2847 | return_error_line = __LINE__; | ||
| 2848 | goto err_invalid_target_handle; | ||
| 2849 | } | ||
| 2842 | } | 2850 | } |
| 2843 | if (!target_node) { | 2851 | if (!target_node) { |
| 2844 | /* | 2852 | /* |
diff --git a/drivers/fpga/altera-ps-spi.c b/drivers/fpga/altera-ps-spi.c index 14f14efdf0d5..06d212a3d49d 100644 --- a/drivers/fpga/altera-ps-spi.c +++ b/drivers/fpga/altera-ps-spi.c | |||
| @@ -249,7 +249,7 @@ static int altera_ps_probe(struct spi_device *spi) | |||
| 249 | 249 | ||
| 250 | conf->data = of_id->data; | 250 | conf->data = of_id->data; |
| 251 | conf->spi = spi; | 251 | conf->spi = spi; |
| 252 | conf->config = devm_gpiod_get(&spi->dev, "nconfig", GPIOD_OUT_HIGH); | 252 | conf->config = devm_gpiod_get(&spi->dev, "nconfig", GPIOD_OUT_LOW); |
| 253 | if (IS_ERR(conf->config)) { | 253 | if (IS_ERR(conf->config)) { |
| 254 | dev_err(&spi->dev, "Failed to get config gpio: %ld\n", | 254 | dev_err(&spi->dev, "Failed to get config gpio: %ld\n", |
| 255 | PTR_ERR(conf->config)); | 255 | PTR_ERR(conf->config)); |
diff --git a/drivers/slimbus/messaging.c b/drivers/slimbus/messaging.c index 884419c37e84..457ea1f8db30 100644 --- a/drivers/slimbus/messaging.c +++ b/drivers/slimbus/messaging.c | |||
| @@ -183,7 +183,7 @@ static u16 slim_slicesize(int code) | |||
| 183 | 0, 1, 2, 3, 3, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7 | 183 | 0, 1, 2, 3, 3, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7 |
| 184 | }; | 184 | }; |
| 185 | 185 | ||
| 186 | clamp(code, 1, (int)ARRAY_SIZE(sizetocode)); | 186 | code = clamp(code, 1, (int)ARRAY_SIZE(sizetocode)); |
| 187 | 187 | ||
| 188 | return sizetocode[code - 1]; | 188 | return sizetocode[code - 1]; |
| 189 | } | 189 | } |
diff --git a/drivers/uio/uio_hv_generic.c b/drivers/uio/uio_hv_generic.c index f695a7e8c314..c690d100adcd 100644 --- a/drivers/uio/uio_hv_generic.c +++ b/drivers/uio/uio_hv_generic.c | |||
| @@ -19,7 +19,7 @@ | |||
| 19 | * # echo -n "ed963694-e847-4b2a-85af-bc9cfc11d6f3" \ | 19 | * # echo -n "ed963694-e847-4b2a-85af-bc9cfc11d6f3" \ |
| 20 | * > /sys/bus/vmbus/drivers/uio_hv_generic/bind | 20 | * > /sys/bus/vmbus/drivers/uio_hv_generic/bind |
| 21 | */ | 21 | */ |
| 22 | 22 | #define DEBUG 1 | |
| 23 | #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt | 23 | #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt |
| 24 | 24 | ||
| 25 | #include <linux/device.h> | 25 | #include <linux/device.h> |
| @@ -94,10 +94,11 @@ hv_uio_irqcontrol(struct uio_info *info, s32 irq_state) | |||
| 94 | */ | 94 | */ |
| 95 | static void hv_uio_channel_cb(void *context) | 95 | static void hv_uio_channel_cb(void *context) |
| 96 | { | 96 | { |
| 97 | struct hv_uio_private_data *pdata = context; | 97 | struct vmbus_channel *chan = context; |
| 98 | struct hv_device *dev = pdata->device; | 98 | struct hv_device *hv_dev = chan->device_obj; |
| 99 | struct hv_uio_private_data *pdata = hv_get_drvdata(hv_dev); | ||
| 99 | 100 | ||
| 100 | dev->channel->inbound.ring_buffer->interrupt_mask = 1; | 101 | chan->inbound.ring_buffer->interrupt_mask = 1; |
| 101 | virt_mb(); | 102 | virt_mb(); |
| 102 | 103 | ||
| 103 | uio_event_notify(&pdata->info); | 104 | uio_event_notify(&pdata->info); |
| @@ -121,78 +122,46 @@ static void hv_uio_rescind(struct vmbus_channel *channel) | |||
| 121 | uio_event_notify(&pdata->info); | 122 | uio_event_notify(&pdata->info); |
| 122 | } | 123 | } |
| 123 | 124 | ||
| 124 | /* | 125 | /* Sysfs API to allow mmap of the ring buffers |
| 125 | * Handle fault when looking for sub channel ring buffer | 126 | * The ring buffer is allocated as contiguous memory by vmbus_open |
| 126 | * Subchannel ring buffer is same as resource 0 which is main ring buffer | ||
| 127 | * This is derived from uio_vma_fault | ||
| 128 | */ | 127 | */ |
| 129 | static int hv_uio_vma_fault(struct vm_fault *vmf) | ||
