linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, Al Viro <viro@zeniv.linux.org.uk>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 4.4 071/158] take floppy compat ioctls to sodding floppy.c
Date: Fri,  2 Aug 2019 11:28:12 +0200	[thread overview]
Message-ID: <20190802092218.375369354@linuxfoundation.org> (raw)
In-Reply-To: <20190802092203.671944552@linuxfoundation.org>

[ Upstream commit 229b53c9bf4e1132a4aa6feb9632a7a1f1d08c5c ]

all other drivers recognizing those ioctls are very much *not*
biarch.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 block/compat_ioctl.c   |  340 -------------------------------------------------
 drivers/block/floppy.c |  328 +++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 328 insertions(+), 340 deletions(-)

--- a/block/compat_ioctl.c
+++ b/block/compat_ioctl.c
@@ -4,7 +4,6 @@
 #include <linux/cdrom.h>
 #include <linux/compat.h>
 #include <linux/elevator.h>
-#include <linux/fd.h>
 #include <linux/hdreg.h>
 #include <linux/slab.h>
 #include <linux/syscalls.h>
@@ -209,318 +208,6 @@ static int compat_blkpg_ioctl(struct blo
 #define BLKBSZSET_32		_IOW(0x12, 113, int)
 #define BLKGETSIZE64_32		_IOR(0x12, 114, int)
 
-struct compat_floppy_drive_params {
-	char		cmos;
-	compat_ulong_t	max_dtr;
-	compat_ulong_t	hlt;
-	compat_ulong_t	hut;
-	compat_ulong_t	srt;
-	compat_ulong_t	spinup;
-	compat_ulong_t	spindown;
-	unsigned char	spindown_offset;
-	unsigned char	select_delay;
-	unsigned char	rps;
-	unsigned char	tracks;
-	compat_ulong_t	timeout;
-	unsigned char	interleave_sect;
-	struct floppy_max_errors max_errors;
-	char		flags;
-	char		read_track;
-	short		autodetect[8];
-	compat_int_t	checkfreq;
-	compat_int_t	native_format;
-};
-
-struct compat_floppy_drive_struct {
-	signed char	flags;
-	compat_ulong_t	spinup_date;
-	compat_ulong_t	select_date;
-	compat_ulong_t	first_read_date;
-	short		probed_format;
-	short		track;
-	short		maxblock;
-	short		maxtrack;
-	compat_int_t	generation;
-	compat_int_t	keep_data;
-	compat_int_t	fd_ref;
-	compat_int_t	fd_device;
-	compat_int_t	last_checked;
-	compat_caddr_t dmabuf;
-	compat_int_t	bufblocks;
-};
-
-struct compat_floppy_fdc_state {
-	compat_int_t	spec1;
-	compat_int_t	spec2;
-	compat_int_t	dtr;
-	unsigned char	version;
-	unsigned char	dor;
-	compat_ulong_t	address;
-	unsigned int	rawcmd:2;
-	unsigned int	reset:1;
-	unsigned int	need_configure:1;
-	unsigned int	perp_mode:2;
-	unsigned int	has_fifo:1;
-	unsigned int	driver_version;
-	unsigned char	track[4];
-};
-
-struct compat_floppy_write_errors {
-	unsigned int	write_errors;
-	compat_ulong_t	first_error_sector;
-	compat_int_t	first_error_generation;
-	compat_ulong_t	last_error_sector;
-	compat_int_t	last_error_generation;
-	compat_uint_t	badness;
-};
-
-#define FDSETPRM32 _IOW(2, 0x42, struct compat_floppy_struct)
-#define FDDEFPRM32 _IOW(2, 0x43, struct compat_floppy_struct)
-#define FDSETDRVPRM32 _IOW(2, 0x90, struct compat_floppy_drive_params)
-#define FDGETDRVPRM32 _IOR(2, 0x11, struct compat_floppy_drive_params)
-#define FDGETDRVSTAT32 _IOR(2, 0x12, struct compat_floppy_drive_struct)
-#define FDPOLLDRVSTAT32 _IOR(2, 0x13, struct compat_floppy_drive_struct)
-#define FDGETFDCSTAT32 _IOR(2, 0x15, struct compat_floppy_fdc_state)
-#define FDWERRORGET32  _IOR(2, 0x17, struct compat_floppy_write_errors)
-
-static struct {
-	unsigned int	cmd32;
-	unsigned int	cmd;
-} fd_ioctl_trans_table[] = {
-	{ FDSETPRM32, FDSETPRM },
-	{ FDDEFPRM32, FDDEFPRM },
-	{ FDGETPRM32, FDGETPRM },
-	{ FDSETDRVPRM32, FDSETDRVPRM },
-	{ FDGETDRVPRM32, FDGETDRVPRM },
-	{ FDGETDRVSTAT32, FDGETDRVSTAT },
-	{ FDPOLLDRVSTAT32, FDPOLLDRVSTAT },
-	{ FDGETFDCSTAT32, FDGETFDCSTAT },
-	{ FDWERRORGET32, FDWERRORGET }
-};
-
-#define NR_FD_IOCTL_TRANS ARRAY_SIZE(fd_ioctl_trans_table)
-
-static int compat_fd_ioctl(struct block_device *bdev, fmode_t mode,
-		unsigned int cmd, unsigned long arg)
-{
-	mm_segment_t old_fs = get_fs();
-	void *karg = NULL;
-	unsigned int kcmd = 0;
-	int i, err;
-
-	for (i = 0; i < NR_FD_IOCTL_TRANS; i++)
-		if (cmd == fd_ioctl_trans_table[i].cmd32) {
-			kcmd = fd_ioctl_trans_table[i].cmd;
-			break;
-		}
-	if (!kcmd)
-		return -EINVAL;
-
-	switch (cmd) {
-	case FDSETPRM32:
-	case FDDEFPRM32:
-	case FDGETPRM32:
-	{
-		compat_uptr_t name;
-		struct compat_floppy_struct __user *uf;
-		struct floppy_struct *f;
-
-		uf = compat_ptr(arg);
-		f = karg = kmalloc(sizeof(struct floppy_struct), GFP_KERNEL);
-		if (!karg)
-			return -ENOMEM;
-		if (cmd == FDGETPRM32)
-			break;
-		err = __get_user(f->size, &uf->size);
-		err |= __get_user(f->sect, &uf->sect);
-		err |= __get_user(f->head, &uf->head);
-		err |= __get_user(f->track, &uf->track);
-		err |= __get_user(f->stretch, &uf->stretch);
-		err |= __get_user(f->gap, &uf->gap);
-		err |= __get_user(f->rate, &uf->rate);
-		err |= __get_user(f->spec1, &uf->spec1);
-		err |= __get_user(f->fmt_gap, &uf->fmt_gap);
-		err |= __get_user(name, &uf->name);
-		f->name = compat_ptr(name);
-		if (err) {
-			err = -EFAULT;
-			goto out;
-		}
-		break;
-	}
-	case FDSETDRVPRM32:
-	case FDGETDRVPRM32:
-	{
-		struct compat_floppy_drive_params __user *uf;
-		struct floppy_drive_params *f;
-
-		uf = compat_ptr(arg);
-		f = karg = kmalloc(sizeof(struct floppy_drive_params), GFP_KERNEL);
-		if (!karg)
-			return -ENOMEM;
-		if (cmd == FDGETDRVPRM32)
-			break;
-		err = __get_user(f->cmos, &uf->cmos);
-		err |= __get_user(f->max_dtr, &uf->max_dtr);
-		err |= __get_user(f->hlt, &uf->hlt);
-		err |= __get_user(f->hut, &uf->hut);
-		err |= __get_user(f->srt, &uf->srt);
-		err |= __get_user(f->spinup, &uf->spinup);
-		err |= __get_user(f->spindown, &uf->spindown);
-		err |= __get_user(f->spindown_offset, &uf->spindown_offset);
-		err |= __get_user(f->select_delay, &uf->select_delay);
-		err |= __get_user(f->rps, &uf->rps);
-		err |= __get_user(f->tracks, &uf->tracks);
-		err |= __get_user(f->timeout, &uf->timeout);
-		err |= __get_user(f->interleave_sect, &uf->interleave_sect);
-		err |= __copy_from_user(&f->max_errors, &uf->max_errors, sizeof(f->max_errors));
-		err |= __get_user(f->flags, &uf->flags);
-		err |= __get_user(f->read_track, &uf->read_track);
-		err |= __copy_from_user(f->autodetect, uf->autodetect, sizeof(f->autodetect));
-		err |= __get_user(f->checkfreq, &uf->checkfreq);
-		err |= __get_user(f->native_format, &uf->native_format);
-		if (err) {
-			err = -EFAULT;
-			goto out;
-		}
-		break;
-	}
-	case FDGETDRVSTAT32:
-	case FDPOLLDRVSTAT32:
-		karg = kmalloc(sizeof(struct floppy_drive_struct), GFP_KERNEL);
-		if (!karg)
-			return -ENOMEM;
-		break;
-	case FDGETFDCSTAT32:
-		karg = kmalloc(sizeof(struct floppy_fdc_state), GFP_KERNEL);
-		if (!karg)
-			return -ENOMEM;
-		break;
-	case FDWERRORGET32:
-		karg = kmalloc(sizeof(struct floppy_write_errors), GFP_KERNEL);
-		if (!karg)
-			return -ENOMEM;
-		break;
-	default:
-		return -EINVAL;
-	}
-	set_fs(KERNEL_DS);
-	err = __blkdev_driver_ioctl(bdev, mode, kcmd, (unsigned long)karg);
-	set_fs(old_fs);
-	if (err)
-		goto out;
-	switch (cmd) {
-	case FDGETPRM32:
-	{
-		struct floppy_struct *f = karg;
-		struct compat_floppy_struct __user *uf = compat_ptr(arg);
-
-		err = __put_user(f->size, &uf->size);
-		err |= __put_user(f->sect, &uf->sect);
-		err |= __put_user(f->head, &uf->head);
-		err |= __put_user(f->track, &uf->track);
-		err |= __put_user(f->stretch, &uf->stretch);
-		err |= __put_user(f->gap, &uf->gap);
-		err |= __put_user(f->rate, &uf->rate);
-		err |= __put_user(f->spec1, &uf->spec1);
-		err |= __put_user(f->fmt_gap, &uf->fmt_gap);
-		err |= __put_user((u64)f->name, (compat_caddr_t __user *)&uf->name);
-		break;
-	}
-	case FDGETDRVPRM32:
-	{
-		struct compat_floppy_drive_params __user *uf;
-		struct floppy_drive_params *f = karg;
-
-		uf = compat_ptr(arg);
-		err = __put_user(f->cmos, &uf->cmos);
-		err |= __put_user(f->max_dtr, &uf->max_dtr);
-		err |= __put_user(f->hlt, &uf->hlt);
-		err |= __put_user(f->hut, &uf->hut);
-		err |= __put_user(f->srt, &uf->srt);
-		err |= __put_user(f->spinup, &uf->spinup);
-		err |= __put_user(f->spindown, &uf->spindown);
-		err |= __put_user(f->spindown_offset, &uf->spindown_offset);
-		err |= __put_user(f->select_delay, &uf->select_delay);
-		err |= __put_user(f->rps, &uf->rps);
-		err |= __put_user(f->tracks, &uf->tracks);
-		err |= __put_user(f->timeout, &uf->timeout);
-		err |= __put_user(f->interleave_sect, &uf->interleave_sect);
-		err |= __copy_to_user(&uf->max_errors, &f->max_errors, sizeof(f->max_errors));
-		err |= __put_user(f->flags, &uf->flags);
-		err |= __put_user(f->read_track, &uf->read_track);
-		err |= __copy_to_user(uf->autodetect, f->autodetect, sizeof(f->autodetect));
-		err |= __put_user(f->checkfreq, &uf->checkfreq);
-		err |= __put_user(f->native_format, &uf->native_format);
-		break;
-	}
-	case FDGETDRVSTAT32:
-	case FDPOLLDRVSTAT32:
-	{
-		struct compat_floppy_drive_struct __user *uf;
-		struct floppy_drive_struct *f = karg;
-
-		uf = compat_ptr(arg);
-		err = __put_user(f->flags, &uf->flags);
-		err |= __put_user(f->spinup_date, &uf->spinup_date);
-		err |= __put_user(f->select_date, &uf->select_date);
-		err |= __put_user(f->first_read_date, &uf->first_read_date);
-		err |= __put_user(f->probed_format, &uf->probed_format);
-		err |= __put_user(f->track, &uf->track);
-		err |= __put_user(f->maxblock, &uf->maxblock);
-		err |= __put_user(f->maxtrack, &uf->maxtrack);
-		err |= __put_user(f->generation, &uf->generation);
-		err |= __put_user(f->keep_data, &uf->keep_data);
-		err |= __put_user(f->fd_ref, &uf->fd_ref);
-		err |= __put_user(f->fd_device, &uf->fd_device);
-		err |= __put_user(f->last_checked, &uf->last_checked);
-		err |= __put_user((u64)f->dmabuf, &uf->dmabuf);
-		err |= __put_user((u64)f->bufblocks, &uf->bufblocks);
-		break;
-	}
-	case FDGETFDCSTAT32:
-	{
-		struct compat_floppy_fdc_state __user *uf;
-		struct floppy_fdc_state *f = karg;
-
-		uf = compat_ptr(arg);
-		err = __put_user(f->spec1, &uf->spec1);
-		err |= __put_user(f->spec2, &uf->spec2);
-		err |= __put_user(f->dtr, &uf->dtr);
-		err |= __put_user(f->version, &uf->version);
-		err |= __put_user(f->dor, &uf->dor);
-		err |= __put_user(f->address, &uf->address);
-		err |= __copy_to_user((char __user *)&uf->address + sizeof(uf->address),
-				   (char *)&f->address + sizeof(f->address), sizeof(int));
-		err |= __put_user(f->driver_version, &uf->driver_version);
-		err |= __copy_to_user(uf->track, f->track, sizeof(f->track));
-		break;
-	}
-	case FDWERRORGET32:
-	{
-		struct compat_floppy_write_errors __user *uf;
-		struct floppy_write_errors *f = karg;
-
-		uf = compat_ptr(arg);
-		err = __put_user(f->write_errors, &uf->write_errors);
-		err |= __put_user(f->first_error_sector, &uf->first_error_sector);
-		err |= __put_user(f->first_error_generation, &uf->first_error_generation);
-		err |= __put_user(f->last_error_sector, &uf->last_error_sector);
-		err |= __put_user(f->last_error_generation, &uf->last_error_generation);
-		err |= __put_user(f->badness, &uf->badness);
-		break;
-	}
-	default:
-		break;
-	}
-	if (err)
-		err = -EFAULT;
-
-out:
-	kfree(karg);
-	return err;
-}
-
 static int compat_blkdev_driver_ioctl(struct block_device *bdev, fmode_t mode,
 			unsigned cmd, unsigned long arg)
 {
@@ -537,16 +224,6 @@ static int compat_blkdev_driver_ioctl(st
 	case HDIO_GET_ADDRESS:
 	case HDIO_GET_BUSSTATE:
 		return compat_hdio_ioctl(bdev, mode, cmd, arg);
-	case FDSETPRM32:
-	case FDDEFPRM32:
-	case FDGETPRM32:
-	case FDSETDRVPRM32:
-	case FDGETDRVPRM32:
-	case FDGETDRVSTAT32:
-	case FDPOLLDRVSTAT32:
-	case FDGETFDCSTAT32:
-	case FDWERRORGET32:
-		return compat_fd_ioctl(bdev, mode, cmd, arg);
 	case CDROMREADAUDIO:
 		return compat_cdrom_read_audio(bdev, mode, cmd, arg);
 	case CDROM_SEND_PACKET:
@@ -566,23 +243,6 @@ static int compat_blkdev_driver_ioctl(st
 	case HDIO_DRIVE_CMD:
 	/* 0x330 is reserved -- it used to be HDIO_GETGEO_BIG */
 	case 0x330:
-	/* 0x02 -- Floppy ioctls */
-	case FDMSGON:
-	case FDMSGOFF:
-	case FDSETEMSGTRESH:
-	case FDFLUSH:
-	case FDWERRORCLR:
-	case FDSETMAXERRS:
-	case FDGETMAXERRS:
-	case FDGETDRVTYP:
-	case FDEJECT:
-	case FDCLRPRM:
-	case FDFMTBEG:
-	case FDFMTEND:
-	case FDRESET:
-	case FDTWADDLE:
-	case FDFMTTRK:
-	case FDRAWCMD:
 	/* CDROM stuff */
 	case CDROMPAUSE:
 	case CDROMRESUME:
--- a/drivers/block/floppy.c
+++ b/drivers/block/floppy.c
@@ -192,6 +192,7 @@ static int print_unex = 1;
 #include <linux/io.h>
 #include <linux/uaccess.h>
 #include <linux/async.h>
+#include <linux/compat.h>
 
 /*
  * PS/2 floppies have much slower step rates than regular floppies.
@@ -3569,6 +3570,330 @@ static int fd_ioctl(struct block_device
 	return ret;
 }
 
+#ifdef CONFIG_COMPAT
+
+struct compat_floppy_drive_params {
+	char		cmos;
+	compat_ulong_t	max_dtr;
+	compat_ulong_t	hlt;
+	compat_ulong_t	hut;
+	compat_ulong_t	srt;
+	compat_ulong_t	spinup;
+	compat_ulong_t	spindown;
+	unsigned char	spindown_offset;
+	unsigned char	select_delay;
+	unsigned char	rps;
+	unsigned char	tracks;
+	compat_ulong_t	timeout;
+	unsigned char	interleave_sect;
+	struct floppy_max_errors max_errors;
+	char		flags;
+	char		read_track;
+	short		autodetect[8];
+	compat_int_t	checkfreq;
+	compat_int_t	native_format;
+};
+
+struct compat_floppy_drive_struct {
+	signed char	flags;
+	compat_ulong_t	spinup_date;
+	compat_ulong_t	select_date;
+	compat_ulong_t	first_read_date;
+	short		probed_format;
+	short		track;
+	short		maxblock;
+	short		maxtrack;
+	compat_int_t	generation;
+	compat_int_t	keep_data;
+	compat_int_t	fd_ref;
+	compat_int_t	fd_device;
+	compat_int_t	last_checked;
+	compat_caddr_t dmabuf;
+	compat_int_t	bufblocks;
+};
+
+struct compat_floppy_fdc_state {
+	compat_int_t	spec1;
+	compat_int_t	spec2;
+	compat_int_t	dtr;
+	unsigned char	version;
+	unsigned char	dor;
+	compat_ulong_t	address;
+	unsigned int	rawcmd:2;
+	unsigned int	reset:1;
+	unsigned int	need_configure:1;
+	unsigned int	perp_mode:2;
+	unsigned int	has_fifo:1;
+	unsigned int	driver_version;
+	unsigned char	track[4];
+};
+
+struct compat_floppy_write_errors {
+	unsigned int	write_errors;
+	compat_ulong_t	first_error_sector;
+	compat_int_t	first_error_generation;
+	compat_ulong_t	last_error_sector;
+	compat_int_t	last_error_generation;
+	compat_uint_t	badness;
+};
+
+#define FDSETPRM32 _IOW(2, 0x42, struct compat_floppy_struct)
+#define FDDEFPRM32 _IOW(2, 0x43, struct compat_floppy_struct)
+#define FDSETDRVPRM32 _IOW(2, 0x90, struct compat_floppy_drive_params)
+#define FDGETDRVPRM32 _IOR(2, 0x11, struct compat_floppy_drive_params)
+#define FDGETDRVSTAT32 _IOR(2, 0x12, struct compat_floppy_drive_struct)
+#define FDPOLLDRVSTAT32 _IOR(2, 0x13, struct compat_floppy_drive_struct)
+#define FDGETFDCSTAT32 _IOR(2, 0x15, struct compat_floppy_fdc_state)
+#define FDWERRORGET32  _IOR(2, 0x17, struct compat_floppy_write_errors)
+
+static int compat_set_geometry(struct block_device *bdev, fmode_t mode, unsigned int cmd,
+		    struct compat_floppy_struct __user *arg)
+{
+	struct floppy_struct v;
+	int drive, type;
+	int err;
+
+	BUILD_BUG_ON(offsetof(struct floppy_struct, name) !=
+		     offsetof(struct compat_floppy_struct, name));
+
+	if (!(mode & (FMODE_WRITE | FMODE_WRITE_IOCTL)))
+		return -EPERM;
+
+	memset(&v, 0, sizeof(struct floppy_struct));
+	if (copy_from_user(&v, arg, offsetof(struct floppy_struct, name)))
+		return -EFAULT;
+
+	mutex_lock(&floppy_mutex);
+	drive = (long)bdev->bd_disk->private_data;
+	type = ITYPE(UDRS->fd_device);
+	err = set_geometry(cmd == FDSETPRM32 ? FDSETPRM : FDDEFPRM,
+			&v, drive, type, bdev);
+	mutex_unlock(&floppy_mutex);
+	return err;
+}
+
+static int compat_get_prm(int drive,
+			  struct compat_floppy_struct __user *arg)
+{
+	struct compat_floppy_struct v;
+	struct floppy_struct *p;
+	int err;
+
+	memset(&v, 0, sizeof(v));
+	mutex_lock(&floppy_mutex);
+	err = get_floppy_geometry(drive, ITYPE(UDRS->fd_device), &p);
+	if (err) {
+		mutex_unlock(&floppy_mutex);
+		return err;
+	}
+	memcpy(&v, p, offsetof(struct floppy_struct, name));
+	mutex_unlock(&floppy_mutex);
+	if (copy_to_user(arg, &v, sizeof(struct compat_floppy_struct)))
+		return -EFAULT;
+	return 0;
+}
+
+static int compat_setdrvprm(int drive,
+			    struct compat_floppy_drive_params __user *arg)
+{
+	struct compat_floppy_drive_params v;
+
+	if (!capable(CAP_SYS_ADMIN))
+		return -EPERM;
+	if (copy_from_user(&v, arg, sizeof(struct compat_floppy_drive_params)))
+		return -EFAULT;
+	mutex_lock(&floppy_mutex);
+	UDP->cmos = v.cmos;
+	UDP->max_dtr = v.max_dtr;
+	UDP->hlt = v.hlt;
+	UDP->hut = v.hut;
+	UDP->srt = v.srt;
+	UDP->spinup = v.spinup;
+	UDP->spindown = v.spindown;
+	UDP->spindown_offset = v.spindown_offset;
+	UDP->select_delay = v.select_delay;
+	UDP->rps = v.rps;
+	UDP->tracks = v.tracks;
+	UDP->timeout = v.timeout;
+	UDP->interleave_sect = v.interleave_sect;
+	UDP->max_errors = v.max_errors;
+	UDP->flags = v.flags;
+	UDP->read_track = v.read_track;
+	memcpy(UDP->autodetect, v.autodetect, sizeof(v.autodetect));
+	UDP->checkfreq = v.checkfreq;
+	UDP->native_format = v.native_format;
+	mutex_unlock(&floppy_mutex);
+	return 0;
+}
+
+static int compat_getdrvprm(int drive,
+			    struct compat_floppy_drive_params __user *arg)
+{
+	struct compat_floppy_drive_params v;
+
+	memset(&v, 0, sizeof(struct compat_floppy_drive_params));
+	mutex_lock(&floppy_mutex);
+	v.cmos = UDP->cmos;
+	v.max_dtr = UDP->max_dtr;
+	v.hlt = UDP->hlt;
+	v.hut = UDP->hut;
+	v.srt = UDP->srt;
+	v.spinup = UDP->spinup;
+	v.spindown = UDP->spindown;
+	v.spindown_offset = UDP->spindown_offset;
+	v.select_delay = UDP->select_delay;
+	v.rps = UDP->rps;
+	v.tracks = UDP->tracks;
+	v.timeout = UDP->timeout;
+	v.interleave_sect = UDP->interleave_sect;
+	v.max_errors = UDP->max_errors;
+	v.flags = UDP->flags;
+	v.read_track = UDP->read_track;
+	memcpy(v.autodetect, UDP->autodetect, sizeof(v.autodetect));
+	v.checkfreq = UDP->checkfreq;
+	v.native_format = UDP->native_format;
+	mutex_unlock(&floppy_mutex);
+
+	if (copy_from_user(arg, &v, sizeof(struct compat_floppy_drive_params)))
+		return -EFAULT;
+	return 0;
+}
+
+static int compat_getdrvstat(int drive, bool poll,
+			    struct compat_floppy_drive_struct __user *arg)
+{
+	struct compat_floppy_drive_struct v;
+
+	memset(&v, 0, sizeof(struct compat_floppy_drive_struct));
+	mutex_lock(&floppy_mutex);
+
+	if (poll) {
+		if (lock_fdc(drive, true))
+			goto Eintr;
+		if (poll_drive(true, FD_RAW_NEED_DISK) == -EINTR)
+			goto Eintr;
+		process_fd_request();
+	}
+	v.spinup_date = UDRS->spinup_date;
+	v.select_date = UDRS->select_date;
+	v.first_read_date = UDRS->first_read_date;
+	v.probed_format = UDRS->probed_format;
+	v.track = UDRS->track;
+	v.maxblock = UDRS->maxblock;
+	v.maxtrack = UDRS->maxtrack;
+	v.generation = UDRS->generation;
+	v.keep_data = UDRS->keep_data;
+	v.fd_ref = UDRS->fd_ref;
+	v.fd_device = UDRS->fd_device;
+	v.last_checked = UDRS->last_checked;
+	v.dmabuf = (uintptr_t)UDRS->dmabuf;
+	v.bufblocks = UDRS->bufblocks;
+	mutex_unlock(&floppy_mutex);
+
+	if (copy_from_user(arg, &v, sizeof(struct compat_floppy_drive_struct)))
+		return -EFAULT;
+	return 0;
+Eintr:
+	mutex_unlock(&floppy_mutex);
+	return -EINTR;
+}
+
+static int compat_getfdcstat(int drive,
+			    struct compat_floppy_fdc_state __user *arg)
+{
+	struct compat_floppy_fdc_state v32;
+	struct floppy_fdc_state v;
+
+	mutex_lock(&floppy_mutex);
+	v = *UFDCS;
+	mutex_unlock(&floppy_mutex);
+
+	memset(&v32, 0, sizeof(struct compat_floppy_fdc_state));
+	v32.spec1 = v.spec1;
+	v32.spec2 = v.spec2;
+	v32.dtr = v.dtr;
+	v32.version = v.version;
+	v32.dor = v.dor;
+	v32.address = v.address;
+	v32.rawcmd = v.rawcmd;
+	v32.reset = v.reset;
+	v32.need_configure = v.need_configure;
+	v32.perp_mode = v.perp_mode;
+	v32.has_fifo = v.has_fifo;
+	v32.driver_version = v.driver_version;
+	memcpy(v32.track, v.track, 4);
+	if (copy_to_user(arg, &v32, sizeof(struct compat_floppy_fdc_state)))
+		return -EFAULT;
+	return 0;
+}
+
+static int compat_werrorget(int drive,
+			    struct compat_floppy_write_errors __user *arg)
+{
+	struct compat_floppy_write_errors v32;
+	struct floppy_write_errors v;
+
+	memset(&v32, 0, sizeof(struct compat_floppy_write_errors));
+	mutex_lock(&floppy_mutex);
+	v = *UDRWE;
+	mutex_unlock(&floppy_mutex);
+	v32.write_errors = v.write_errors;
+	v32.first_error_sector = v.first_error_sector;
+	v32.first_error_generation = v.first_error_generation;
+	v32.last_error_sector = v.last_error_sector;
+	v32.last_error_generation = v.last_error_generation;
+	v32.badness = v.badness;
+	if (copy_to_user(arg, &v32, sizeof(struct compat_floppy_write_errors)))
+		return -EFAULT;
+	return 0;
+}
+
+static int fd_compat_ioctl(struct block_device *bdev, fmode_t mode, unsigned int cmd,
+		    unsigned long param)
+{
+	int drive = (long)bdev->bd_disk->private_data;
+	switch (cmd) {
+	case FDMSGON:
+	case FDMSGOFF:
+	case FDSETEMSGTRESH:
+	case FDFLUSH:
+	case FDWERRORCLR:
+	case FDEJECT:
+	case FDCLRPRM:
+	case FDFMTBEG:
+	case FDRESET:
+	case FDTWADDLE:
+		return fd_ioctl(bdev, mode, cmd, param);
+	case FDSETMAXERRS:
+	case FDGETMAXERRS:
+	case FDGETDRVTYP:
+	case FDFMTEND:
+	case FDFMTTRK:
+	case FDRAWCMD:
+		return fd_ioctl(bdev, mode, cmd,
+				(unsigned long)compat_ptr(param));
+	case FDSETPRM32:
+	case FDDEFPRM32:
+		return compat_set_geometry(bdev, mode, cmd, compat_ptr(param));
+	case FDGETPRM32:
+		return compat_get_prm(drive, compat_ptr(param));
+	case FDSETDRVPRM32:
+		return compat_setdrvprm(drive, compat_ptr(param));
+	case FDGETDRVPRM32:
+		return compat_getdrvprm(drive, compat_ptr(param));
+	case FDPOLLDRVSTAT32:
+		return compat_getdrvstat(drive, true, compat_ptr(param));
+	case FDGETDRVSTAT32:
+		return compat_getdrvstat(drive, false, compat_ptr(param));
+	case FDGETFDCSTAT32:
+		return compat_getfdcstat(drive, compat_ptr(param));
+	case FDWERRORGET32:
+		return compat_werrorget(drive, compat_ptr(param));
+	}
+	return -EINVAL;
+}
+#endif
+
 static void __init config_types(void)
 {
 	bool has_drive = false;
@@ -3885,6 +4210,9 @@ static const struct block_device_operati
 	.getgeo			= fd_getgeo,
 	.check_events		= floppy_check_events,
 	.revalidate_disk	= floppy_revalidate,
+#ifdef CONFIG_COMPAT
+	.compat_ioctl		= fd_compat_ioctl,
+#endif
 };
 
 /*



  parent reply	other threads:[~2019-08-02  9:33 UTC|newest]

Thread overview: 166+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-02  9:27 [PATCH 4.4 000/158] 4.4.187-stable review Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 001/158] MIPS: ath79: fix ar933x uart parity mode Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 002/158] MIPS: fix build on non-linux hosts Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 003/158] dmaengine: imx-sdma: fix use-after-free on probe error path Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 004/158] ath10k: Do not send probe response template for mesh Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 005/158] ath9k: Check for errors when reading SREV register Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 006/158] ath6kl: add some bounds checking Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 007/158] ath: DFS JP domain W56 fixed pulse type 3 RADAR detection Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 008/158] batman-adv: fix for leaked TVLV handler Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 009/158] media: dvb: usb: fix use after free in dvb_usb_device_exit Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 010/158] crypto: talitos - fix skcipher failure due to wrong output IV Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 011/158] media: marvell-ccic: fix DMA s/g desc number calculation Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 012/158] media: vpss: fix a potential NULL pointer dereference Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 013/158] net: stmmac: dwmac1000: Clear unused address entries Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 014/158] signal/pid_namespace: Fix reboot_pid_ns to use send_sig not force_sig Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 015/158] af_key: fix leaks in key_pol_get_resp and dump_sp Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 016/158] xfrm: Fix xfrm sel prefix length validation Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 017/158] media: staging: media: davinci_vpfe: - Fix for memory leak if decoder initialization fails Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 018/158] net: phy: Check against net_device being NULL Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 019/158] tua6100: Avoid build warnings Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 020/158] locking/lockdep: Fix merging of hlocks with non-zero references Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 021/158] media: wl128x: Fix some error handling in fm_v4l2_init_video_device() Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 022/158] cpupower : frequency-set -r option misses the last cpu in related cpu list Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 023/158] net: fec: Do not use netdev messages too early Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 024/158] net: axienet: Fix race condition causing TX hang Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 025/158] s390/qdio: handle PENDING state for QEBSM devices Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 026/158] perf test 6: Fix missing kvm module load for s390 Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 027/158] gpio: omap: fix lack of irqstatus_raw0 for OMAP4 Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 028/158] gpio: omap: ensure irq is enabled before wakeup Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 029/158] regmap: fix bulk writes on paged registers Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 030/158] bpf: silence warning messages in core Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 031/158] rcu: Force inlining of rcu_read_lock() Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 032/158] xfrm: fix sa selector validation Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 033/158] perf evsel: Make perf_evsel__name() accept a NULL argument Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 034/158] vhost_net: disable zerocopy by default Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 035/158] EDAC/sysfs: Fix memory leak when creating a csrow object Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 036/158] media: i2c: fix warning same module names Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 037/158] ntp: Limit TAI-UTC offset Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 038/158] timer_list: Guard procfs specific code Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 039/158] acpi/arm64: ignore 5.1 FADTs that are reported as 5.0 Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 040/158] media: coda: fix mpeg2 sequence number handling Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 041/158] media: coda: increment sequence offset for the last returned frame Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 042/158] mt7601u: do not schedule rx_tasklet when the device has been disconnected Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 043/158] x86/build: Add set -e to mkcapflags.sh to delete broken capflags.c Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 044/158] mt7601u: fix possible memory leak when the device is disconnected Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 045/158] ath10k: fix PCIE device wake up failed Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 046/158] rslib: Fix decoding of shortened codes Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 047/158] rslib: Fix handling of of caller provided syndrome Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 048/158] ixgbe: Check DDM existence in transceiver before access Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 049/158] EDAC: Fix global-out-of-bounds write when setting edac_mc_poll_msec Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 050/158] bcache: check c->gc_thread by IS_ERR_OR_NULL in cache_set_flush() Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 051/158] Bluetooth: hci_bcsp: Fix memory leak in rx_skb Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 052/158] Bluetooth: 6lowpan: search for destination address in all peers Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 053/158] Bluetooth: Check state in l2cap_disconnect_rsp Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 054/158] Bluetooth: validate BLE connection interval updates Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 055/158] crypto: ghash - fix unaligned memory access in ghash_setkey() Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 056/158] crypto: arm64/sha1-ce - correct digest for empty data in finup Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 057/158] crypto: arm64/sha2-ce " Greg Kroah-Hartman
2019-08-02  9:27 ` [PATCH 4.4 058/158] Input: gtco - bounds check collection indent level Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 059/158] regulator: s2mps11: Fix buck7 and buck8 wrong voltages Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 060/158] tracing/snapshot: Resize spare buffer if size changed Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 061/158] NFSv4: Handle the special Linux file open access mode Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 062/158] lib/scatterlist: Fix mapping iterator when sg->offset is greater than PAGE_SIZE Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 063/158] ALSA: seq: Break too long mutex context in the write loop Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 064/158] media: v4l2: Test type instead of cfg->type in v4l2_ctrl_new_custom() Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 065/158] media: coda: Remove unbalanced and unneeded mutex unlock Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 066/158] KVM: x86/vPMU: refine kvm_pmu err msg when event creation failed Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 067/158] drm/nouveau/i2c: Enable i2c pads & busses during preinit Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 068/158] padata: use smp_mb in padata_reorder to avoid orphaned padata jobs Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 069/158] 9p/virtio: Add cleanup path in p9_virtio_init Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 070/158] PCI: Do not poll for PME if the device is in D3cold Greg Kroah-Hartman
2019-08-02  9:28 ` Greg Kroah-Hartman [this message]
2019-08-02  9:28 ` [PATCH 4.4 072/158] floppy: fix div-by-zero in setup_format_params Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 073/158] floppy: fix out-of-bounds read in next_valid_format Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 074/158] floppy: fix invalid pointer dereference in drive_name Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 075/158] floppy: fix out-of-bounds read in copy_buffer Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 076/158] coda: pass the host file in vma->vm_file on mmap Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 077/158] gpu: ipu-v3: ipu-ic: Fix saturation bit offset in TPMEM Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 078/158] parisc: Fix kernel panic due invalid values in IAOQ0 or IAOQ1 Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 079/158] powerpc/32s: fix suspend/resume when IBATs 4-7 are used Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 080/158] powerpc/watchpoint: Restore NV GPRs while returning from exception Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 081/158] eCryptfs: fix a couple type promotion bugs Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 082/158] intel_th: msu: Fix single mode with disabled IOMMU Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 083/158] Bluetooth: Add SMP workaround Microsoft Surface Precision Mouse bug Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 084/158] usb: Handle USB3 remote wakeup for LPM enabled devices correctly Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 085/158] dm bufio: fix deadlock with loop device Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 086/158] bnx2x: Prevent load reordering in tx completion processing Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 087/158] caif-hsi: fix possible deadlock in cfhsi_exit_module() Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 088/158] ipv4: dont set IPv6 only flags to IPv4 addresses Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 089/158] net: bcmgenet: use promisc for unsupported filters Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 090/158] net: neigh: fix multiple neigh timer scheduling Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 091/158] nfc: fix potential illegal memory access Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 092/158] sky2: Disable MSI on ASUS P6T Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 093/158] netrom: fix a memory leak in nr_rx_frame() Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 094/158] netrom: hold sock when setting skb->destructor Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 095/158] tcp: Reset bytes_acked and bytes_received when disconnecting Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 096/158] bonding: validate ip header before check IPPROTO_IGMP Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 097/158] net: bridge: mcast: fix stale nsrcs pointer in igmp3/mld2 report handling Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 098/158] net: bridge: mcast: fix stale ipv6 hdr pointer when handling v6 query Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 099/158] net: bridge: stp: dont cache eth dest pointer before skb pull Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 100/158] elevator: fix truncation of icq_cache_name Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 101/158] NFSv4: Fix open create exclusive when the server reboots Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 102/158] nfsd: increase DRC cache limit Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 103/158] nfsd: give out fewer session slots as limit approaches Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 104/158] nfsd: fix performance-limiting session calculation Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 105/158] nfsd: Fix overflow causing non-working mounts on 1 TB machines Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 106/158] drm/panel: simple: Fix panel_simple_dsi_probe Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 107/158] usb: core: hub: Disable hub-initiated U1/U2 Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 108/158] tty: max310x: Fix invalid baudrate divisors calculator Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 109/158] pinctrl: rockchip: fix leaked of_node references Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 110/158] tty: serial: cpm_uart - fix init when SMC is relocated Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 111/158] memstick: Fix error cleanup path of memstick_init Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 112/158] tty/serial: digicolor: Fix digicolor-usart already registered warning Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 113/158] tty: serial: msm_serial: avoid system lockup condition Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 114/158] drm/virtio: Add memory barriers for capset cache Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 115/158] phy: renesas: rcar-gen2: Fix memory leak at error paths Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 116/158] powerpc/pseries/mobility: prevent cpu hotplug during DT update Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 117/158] powerpc/pseries/mobility: rebuild cacheinfo hierarchy post-migration Greg Kroah-Hartman
2019-08-02  9:28 ` [PATCH 4.4 118/158] usb: gadget: Zero ffs_io_data Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 119/158] powerpc/pci/of: Fix OF flags parsing for 64bit BARs Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 120/158] PCI: sysfs: Ignore lockdep for remove attribute Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 121/158] iio: iio-utils: Fix possible incorrect mask calculation Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 122/158] recordmcount: Fix spurious mcount entries on powerpc Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 123/158] mfd: core: Set fwnode for created devices Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 124/158] mfd: arizona: Fix undefined behavior Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 125/158] um: Silence lockdep complaint about mmap_sem Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 126/158] powerpc/4xx/uic: clear pending interrupt after irq type/pol change Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 127/158] serial: sh-sci: Fix TX DMA buffer flushing and workqueue races Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 128/158] kallsyms: exclude kasan local symbols on s390 Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 129/158] perf test mmap-thread-lookup: Initialize variable to suppress memory sanitizer warning Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 130/158] f2fs: avoid out-of-range memory access Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 131/158] mailbox: handle failed named mailbox channel request Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 132/158] powerpc/eeh: Handle hugepages in ioremap space Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 133/158] sh: prevent warnings when using iounmap Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 134/158] mm/kmemleak.c: fix check for softirq context Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 135/158] 9p: pass the correct prototype to read_cache_page Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 136/158] mm/mmu_notifier: use hlist_add_head_rcu() Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 137/158] locking/lockdep: Fix lock used or unused stats error Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 138/158] locking/lockdep: Hide unused class variable Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 139/158] usb: wusbcore: fix unbalanced get/put cluster_id Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 140/158] usb: pci-quirks: Correct AMD PLL quirk detection Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 141/158] x86/sysfb_efi: Add quirks for some devices with swapped width and height Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 142/158] x86/speculation/mds: Apply more accurate check on hypervisor platform Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 143/158] hpet: Fix division by zero in hpet_time_div() Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 144/158] ALSA: line6: Fix wrong altsetting for LINE6_PODHD500_1 Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 145/158] ALSA: hda - Add a conexant codec entry to let mute led work Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 146/158] powerpc/tm: Fix oops on sigreturn on systems without TM Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 147/158] access: avoid the RCU grace period for the temporary subjective credentials Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 148/158] vmstat: Remove BUG_ON from vmstat_update Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 149/158] mm, vmstat: make quiet_vmstat lighter Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 150/158] ipv6: check sk sk_type and protocol early in ip_mroute_set/getsockopt Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 151/158] tcp: reset sk_send_head in tcp_write_queue_purge Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 152/158] ISDN: hfcsusb: checking idx of ep configuration Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 153/158] media: cpia2_usb: first wake up, then free in disconnect Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 154/158] media: radio-raremono: change devm_k*alloc to k*alloc Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 155/158] Bluetooth: hci_uart: check for missing tty operations Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 156/158] sched/fair: Dont free p->numa_faults with concurrent readers Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 157/158] drivers/pps/pps.c: clear offset flags in PPS_SETPARAMS ioctl Greg Kroah-Hartman
2019-08-02  9:29 ` [PATCH 4.4 158/158] ceph: hold i_ceph_lock when removing caps for freeing inode Greg Kroah-Hartman
2019-08-02 14:00 ` [PATCH 4.4 000/158] 4.4.187-stable review Thierry Reding
2019-08-02 15:52 ` Guenter Roeck
2019-08-02 16:22   ` Greg Kroah-Hartman
2019-08-02 15:54 ` kernelci.org bot
2019-08-02 23:19 ` shuah
2019-08-03  5:52 ` Naresh Kamboju
2019-08-03 15:57 ` Guenter Roeck

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190802092218.375369354@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sashal@kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=viro@zeniv.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).