Commit 1f63d1a1 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull char/misc driver fixes from Greg KH:
 "Here are some small char/misc and other driver fixes for 6.1-rc6 to
  resolve some reported problems. Included in here are:

   - iio driver fixes

   - binder driver fix

   - nvmem driver fix

   - vme_vmci information leak fix

   - parport fix

   - slimbus configuration fix

   - coreboot firmware bugfix

   - speakup build fix and crash fix

  All of these have been in linux-next for a while with no reported
  issues"

* tag 'char-misc-6.1-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (22 commits)
  firmware: coreboot: Register bus in module init
  nvmem: u-boot-env: fix crc32_data_offset on redundant u-boot-env
  slimbus: qcom-ngd: Fix build error when CONFIG_SLIM_QCOM_NGD_CTRL=y && CONFIG_QCOM_RPROC_COMMON=m
  docs: update mediator contact information in CoC doc
  slimbus: stream: correct presence rate frequencies
  nvmem: lan9662-otp: Fix compatible string
  binder: validate alloc->mm in ->mmap() handler
  parport_pc: Avoid FIFO port location truncation
  siox: fix possible memory leak in siox_device_add()
  misc/vmw_vmci: fix an infoleak in vmci_host_do_receive_datagram()
  speakup: replace utils' u_char with unsigned char
  speakup: fix a segfault caused by switching consoles
  tools: iio: iio_generic_buffer: Fix read size
  iio: imu: bno055: uninitialized variable bug in bno055_trigger_handler()
  iio: adc: at91_adc: fix possible memory leak in at91_adc_allocate_trigger()
  iio: adc: mp2629: fix potential array out of bound access
  iio: adc: mp2629: fix wrong comparison of channel
  iio: pressure: ms5611: changed hardcoded SPI speed to value limited
  iio: pressure: ms5611: fixed value compensation bug
  iio: accel: bma400: Ensure VDDIO is enable defore reading the chip ID.
  ...
parents ae558268 65946690
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -51,7 +51,7 @@ the Technical Advisory Board (TAB) or other maintainers if you're
uncertain how to handle situations that come up.  It will not be
considered a violation report unless you want it to be.  If you are
uncertain about approaching the TAB or any other maintainers, please
reach out to our conflict mediator, Joanna Lee <joanna.lee@gesmer.com>.
reach out to our conflict mediator, Joanna Lee <jlee@linuxfoundation.org>.

In the end, "be kind to each other" is really what the end goal is for
everybody.  We know everyone is human and we all fail at times, but the
+1 −1
Original line number Diff line number Diff line
@@ -1778,7 +1778,7 @@ static void speakup_con_update(struct vc_data *vc)
{
	unsigned long flags;

	if (!speakup_console[vc->vc_num] || spk_parked)
	if (!speakup_console[vc->vc_num] || spk_parked || !synth)
		return;
	if (!spin_trylock_irqsave(&speakup_info.spinlock, flags))
		/* Speakup output, discard */
+1 −1
Original line number Diff line number Diff line
@@ -54,7 +54,7 @@ static inline int oops(const char *msg, const char *info)

static inline struct st_key *hash_name(char *name)
{
	u_char *pn = (u_char *)name;
	unsigned char *pn = (unsigned char *)name;
	int hash = 0;

	while (*pn) {
+7 −0
Original line number Diff line number Diff line
@@ -739,6 +739,12 @@ int binder_alloc_mmap_handler(struct binder_alloc *alloc,
	const char *failure_string;
	struct binder_buffer *buffer;

	if (unlikely(vma->vm_mm != alloc->mm)) {
		ret = -EINVAL;
		failure_string = "invalid vma->vm_mm";
		goto err_invalid_mm;
	}

	mutex_lock(&binder_alloc_mmap_lock);
	if (alloc->buffer_size) {
		ret = -EBUSY;
@@ -785,6 +791,7 @@ int binder_alloc_mmap_handler(struct binder_alloc *alloc,
	alloc->buffer_size = 0;
err_already_mapped:
	mutex_unlock(&binder_alloc_mmap_lock);
err_invalid_mm:
	binder_alloc_debug(BINDER_DEBUG_USER_ERROR,
			   "%s: %d %lx-%lx %s failed %d\n", __func__,
			   alloc->pid, vma->vm_start, vma->vm_end,
+29 −8
Original line number Diff line number Diff line
@@ -149,12 +149,8 @@ static int coreboot_table_probe(struct platform_device *pdev)
	if (!ptr)
		return -ENOMEM;

	ret = bus_register(&coreboot_bus_type);
	if (!ret) {
	ret = coreboot_table_populate(dev, ptr);
		if (ret)
			bus_unregister(&coreboot_bus_type);
	}

	memunmap(ptr);

	return ret;
@@ -169,7 +165,6 @@ static int __cb_dev_unregister(struct device *dev, void *dummy)
static int coreboot_table_remove(struct platform_device *pdev)
{
	bus_for_each_dev(&coreboot_bus_type, NULL, NULL, __cb_dev_unregister);
	bus_unregister(&coreboot_bus_type);
	return 0;
}

@@ -199,6 +194,32 @@ static struct platform_driver coreboot_table_driver = {
		.of_match_table = of_match_ptr(coreboot_of_match),
	},
};
module_platform_driver(coreboot_table_driver);

static int __init coreboot_table_driver_init(void)
{
	int ret;

	ret = bus_register(&coreboot_bus_type);
	if (ret)
		return ret;

	ret = platform_driver_register(&coreboot_table_driver);
	if (ret) {
		bus_unregister(&coreboot_bus_type);
		return ret;
	}

	return 0;
}

static void __exit coreboot_table_driver_exit(void)
{
	platform_driver_unregister(&coreboot_table_driver);
	bus_unregister(&coreboot_bus_type);
}

module_init(coreboot_table_driver_init);
module_exit(coreboot_table_driver_exit);

MODULE_AUTHOR("Google, Inc.");
MODULE_LICENSE("GPL");
Loading