Merge tag 'char-misc-5.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc
Pull char/misc driver updates from Greg KH: "Here is the big set of char, misc, and other assorted driver subsystem patches for 5.10-rc1. There's a lot of different things in here, all over the drivers/ directory. Some summaries: - soundwire driver updates - habanalabs driver updates - extcon driver updates - nitro_enclaves new driver - fsl-mc driver and core updates - mhi core and bus updates - nvmem driver updates - eeprom driver updates - binder driver updates and fixes - vbox minor bugfixes - fsi driver updates - w1 driver updates - coresight driver updates - interconnect driver updates - misc driver updates - other minor driver updates All of these have been in linux-next for a while with no reported issues" * tag 'char-misc-5.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (396 commits) binder: fix UAF when releasing todo list docs: w1: w1_therm: Fix broken xref, mistakes, clarify text misc: Kconfig: fix a HISI_HIKEY_USB dependency LSM: Fix type of id parameter in kernel_post_load_data prototype misc: Kconfig: add a new dependency for HISI_HIKEY_USB firmware_loader: fix a kernel-doc markup w1: w1_therm: make w1_poll_completion static binder: simplify the return expression of binder_mmap test_firmware: Test partial read support firmware: Add request_partial_firmware_into_buf() firmware: Store opt_flags in fw_priv fs/kernel_file_read: Add "offset" arg for partial reads IMA: Add support for file reads without contents LSM: Add "contents" flag to kernel_read_file hook module: Call security_kernel_post_load_data() firmware_loader: Use security_post_load_data() LSM: Introduce kernel_post_load_data() hook fs/kernel_read_file: Add file_size output argument fs/kernel_read_file: Switch buffer size arg to size_t fs/kernel_read_file: Remove redundant size argument ...
This commit is contained in:
@@ -93,8 +93,9 @@ config PPDEV
|
||||
|
||||
config VIRTIO_CONSOLE
|
||||
tristate "Virtio console"
|
||||
depends on VIRTIO && TTY
|
||||
depends on TTY
|
||||
select HVC_DRIVER
|
||||
select VIRTIO
|
||||
help
|
||||
Virtio console for use with hypervisors.
|
||||
|
||||
|
||||
@@ -853,8 +853,10 @@ static void lp_console_write(struct console *co, const char *s,
|
||||
count--;
|
||||
do {
|
||||
written = parport_write(port, crlf, i);
|
||||
if (written > 0)
|
||||
i -= written, crlf += written;
|
||||
if (written > 0) {
|
||||
i -= written;
|
||||
crlf += written;
|
||||
}
|
||||
} while (i > 0 && (CONSOLE_LP_STRICT || written > 0));
|
||||
}
|
||||
} while (count > 0 && (CONSOLE_LP_STRICT || written > 0));
|
||||
|
||||
@@ -726,6 +726,33 @@ static ssize_t read_iter_zero(struct kiocb *iocb, struct iov_iter *iter)
|
||||
return written;
|
||||
}
|
||||
|
||||
static ssize_t read_zero(struct file *file, char __user *buf,
|
||||
size_t count, loff_t *ppos)
|
||||
{
|
||||
size_t cleared = 0;
|
||||
|
||||
while (count) {
|
||||
size_t chunk = min_t(size_t, count, PAGE_SIZE);
|
||||
size_t left;
|
||||
|
||||
left = clear_user(buf + cleared, chunk);
|
||||
if (unlikely(left)) {
|
||||
cleared += (chunk - left);
|
||||
if (!cleared)
|
||||
return -EFAULT;
|
||||
break;
|
||||
}
|
||||
cleared += chunk;
|
||||
count -= chunk;
|
||||
|
||||
if (signal_pending(current))
|
||||
break;
|
||||
cond_resched();
|
||||
}
|
||||
|
||||
return cleared;
|
||||
}
|
||||
|
||||
static int mmap_zero(struct file *file, struct vm_area_struct *vma)
|
||||
{
|
||||
#ifndef CONFIG_MMU
|
||||
@@ -921,6 +948,7 @@ static const struct file_operations zero_fops = {
|
||||
.llseek = zero_lseek,
|
||||
.write = write_zero,
|
||||
.read_iter = read_iter_zero,
|
||||
.read = read_zero,
|
||||
.write_iter = write_iter_zero,
|
||||
.mmap = mmap_zero,
|
||||
.get_unmapped_area = get_unmapped_area_zero,
|
||||
|
||||
@@ -195,10 +195,7 @@ mspec_mmap(struct file *file, struct vm_area_struct *vma,
|
||||
|
||||
pages = vma_pages(vma);
|
||||
vdata_size = sizeof(struct vma_data) + pages * sizeof(long);
|
||||
if (vdata_size <= PAGE_SIZE)
|
||||
vdata = kzalloc(vdata_size, GFP_KERNEL);
|
||||
else
|
||||
vdata = vzalloc(vdata_size);
|
||||
vdata = kvzalloc(vdata_size, GFP_KERNEL);
|
||||
if (!vdata)
|
||||
return -ENOMEM;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user