Arnd Bergmann
98aaaec4a1
compat_ioctl: reimplement SG_IO handling
...
There are two code locations that implement the SG_IO ioctl: the old
sg.c driver, and the generic scsi_ioctl helper that is in turn used by
multiple drivers.
To eradicate the old compat_ioctl conversion handler for the SG_IO
command, I implement a readable pair of put_sg_io_hdr() /get_sg_io_hdr()
helper functions that can be used for both compat and native mode,
and then I call this from both drivers.
For the iovec handling, there is already a compat_import_iovec() function
that can simply be called in place of import_iovec().
To avoid having to pass the compat/native state through multiple
indirections, I mark the SG_IO command itself as compatible in
fs/compat_ioctl.c and use in_compat_syscall() to figure out where
we are called from.
As a side-effect of this, the sg.c driver now also accepts the 32-bit
sg_io_hdr format in compat mode using the read/write interface, not
just ioctl. This should improve compatiblity with old 32-bit binaries,
but it would break if any application intentionally passes the 64-bit
data structure in compat mode here.
Steffen Maier helped debug an issue in an earlier version of this patch.
Cc: Steffen Maier <maier@linux.ibm.com>
Cc: linux-scsi@vger.kernel.org
Cc: Doug Gilbert <dgilbert@interlog.com>
Cc: "James E.J. Bottomley" <jejb@linux.ibm.com>
Cc: "Martin K. Petersen" <martin.petersen@oracle.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2019-10-23 17:23:46 +02:00
..
2019-09-05 12:17:50 +02:00
2019-09-16 12:06:23 +02:00
2019-09-17 10:27:46 -07:00
2019-10-02 12:19:53 -04:00
2019-09-18 11:14:31 -07:00
2019-09-11 01:09:37 +01:00
2019-08-28 17:24:22 +02:00
2019-09-19 14:14:28 -07:00
2019-09-16 09:56:27 -07:00
2019-09-17 00:40:05 -05:00
2019-09-23 19:37:49 -07:00
2019-09-28 17:47:33 -07:00
2019-09-19 13:27:23 -07:00
2019-09-21 10:59:54 -07:00
2019-09-13 12:47:36 +02:00
2019-09-13 12:47:36 +02:00
2019-09-13 12:47:36 +02:00
2019-09-13 12:47:36 +02:00
2019-09-13 12:47:36 +02:00
2019-09-29 10:24:23 -07:00
2019-09-21 10:26:24 -07:00
2019-09-03 12:37:16 +01:00
2019-09-28 12:39:07 -07:00
2019-09-19 16:24:24 -07:00
2019-09-04 14:57:28 +05:30
2019-09-27 17:00:27 -07:00
2019-09-18 10:33:46 -07:00
2019-09-28 08:14:15 -07:00
2019-08-30 21:29:32 -04:00
2019-08-27 09:22:38 -06:00
2019-08-27 09:22:38 -06:00
2019-09-02 15:55:03 +01:00
2019-10-01 15:45:03 +02:00
2019-08-28 21:17:12 -06:00
2019-08-28 21:17:04 -06:00
2019-09-05 19:52:34 -06:00
2019-10-23 17:23:46 +02:00
2019-08-28 00:30:11 +02:00
2019-09-05 10:15:16 +02:00
2019-09-19 15:31:27 -07:00
2019-09-20 15:45:07 -07:00
2019-09-24 15:54:10 -07:00
2019-09-21 09:47:19 -07:00
2019-09-08 14:53:58 +02:00
2019-09-04 13:38:26 +02:00
2019-09-24 13:37:28 +02:00
2019-09-02 22:44:04 +02:00
2019-09-03 09:36:36 +02:00
2019-09-17 19:15:14 -07:00
2019-09-25 17:51:40 -07:00
2019-09-23 11:21:04 -07:00
2019-09-18 10:33:46 -07:00
2019-09-19 13:27:23 -07:00
2019-08-29 16:43:22 +02:00
2019-09-03 19:21:19 +02:00
2019-09-05 19:52:33 -06:00
2019-09-22 10:34:46 -07:00
2019-10-23 17:15:57 +02:00
2019-09-16 11:44:05 +02:00
2019-09-25 09:55:59 -07:00
2019-10-23 17:15:56 +02:00
2019-09-28 14:05:38 -07:00
2019-09-05 11:40:54 +02:00
2019-08-27 19:02:59 +02:00
2019-09-18 15:58:13 +02:00
2019-08-28 13:01:25 +02:00
2019-09-29 10:33:41 -07:00
2019-09-24 15:54:08 -07:00
2019-09-24 12:36:31 -07:00
2019-09-24 16:48:02 -07:00
2019-09-03 11:33:29 +02:00
2019-09-28 08:14:15 -07:00
2019-08-28 11:50:33 +02:00
2019-09-11 12:39:19 +02:00
2019-09-17 19:15:14 -07:00
2019-09-25 17:51:39 -07:00
2019-08-30 16:12:10 +02:00
2019-09-19 15:32:45 -07:00
2019-09-24 15:54:07 -07:00
2019-09-07 04:28:05 -03:00
2019-09-28 08:14:15 -07:00
2019-09-02 11:43:54 +01:00
2019-09-25 17:51:40 -07:00
2019-09-24 15:54:11 -07:00
2019-09-30 18:52:00 +02:00
2019-09-01 13:33:16 +02:00
2019-08-29 13:49:13 -07:00
2019-09-28 08:14:15 -07:00
2019-09-05 12:32:05 +02:00
2019-09-24 15:54:11 -07:00
2019-09-24 15:54:09 -07:00
2019-09-28 14:05:38 -07:00
2019-09-29 10:33:41 -07:00
2019-10-04 18:11:08 -07:00
2019-09-25 17:51:40 -07:00
2019-09-28 12:39:07 -07:00
2019-09-26 10:10:44 -07:00
2019-09-07 04:28:04 -03:00
2019-09-24 15:54:11 -07:00
2019-09-27 19:37:27 -07:00
2019-10-23 17:23:44 +02:00
2019-09-03 09:30:45 -04:00
2019-09-16 21:32:57 +02:00
2019-09-13 12:35:33 +02:00
2019-09-13 12:35:33 +02:00
2019-09-13 12:47:36 +02:00
2019-09-20 15:15:24 -04:00
2019-08-29 12:55:02 -07:00
2019-09-11 14:46:02 +01:00
2019-09-13 21:15:41 +10:00
2019-09-24 15:54:08 -07:00
2019-09-24 15:54:08 -07:00
2019-09-07 04:28:04 -03:00
2019-08-28 15:25:53 -05:00
2019-09-23 19:16:01 -07:00
2019-09-23 19:16:01 -07:00
2019-08-28 11:29:38 +02:00
2019-09-05 11:54:14 +02:00
2019-10-04 18:11:08 -07:00
2019-09-18 10:33:46 -07:00
2019-09-05 21:16:22 +02:00
2019-09-25 17:51:39 -07:00
2019-09-21 03:25:10 +02:00
2019-09-12 12:09:16 +02:00
2019-09-12 21:05:34 -04:00
2019-09-25 17:51:39 -07:00
2019-09-16 17:25:49 -07:00
2019-09-25 17:42:29 +02:00
2019-09-16 11:43:38 -05:00
2019-09-28 12:39:07 -07:00
2019-09-28 08:14:15 -07:00
2019-09-12 21:05:34 -04:00
2019-09-24 15:54:11 -07:00
2019-10-01 18:42:15 +02:00
2019-09-24 15:54:07 -07:00
2019-09-11 15:27:09 +01:00
2019-09-25 17:51:39 -07:00
2019-09-25 17:51:41 -07:00
2019-09-11 12:34:29 +02:00
2019-09-07 21:42:25 +02:00
2019-09-04 13:37:17 +02:00
2019-09-17 20:03:49 -06:00
2019-09-16 16:26:11 +02:00
2019-09-25 17:51:40 -07:00
2019-08-30 07:27:17 -07:00
2019-08-28 11:50:43 +02:00
2019-09-16 17:25:49 -07:00
2019-08-31 06:51:49 -04:00
2019-10-01 15:45:03 +02:00
2019-09-24 15:54:10 -07:00
2019-09-04 14:34:31 +02:00
2019-09-17 12:35:15 -07:00
2019-09-13 21:15:39 +10:00
2019-08-27 09:22:38 -06:00
2019-09-24 15:54:12 -07:00