forked from Minki/linux
scsi: sd: enable compat ioctls for sed-opal
The sed_ioctl() function is written to be compatible between
32-bit and 64-bit processes, however compat mode is only
wired up for nvme, not for sd.
Add the missing call to sed_ioctl() in sd_compat_ioctl().
Fixes: d80210f25f
("sd: add support for TCG OPAL self encrypting disks")
Cc: linux-scsi@vger.kernel.org
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>
This commit is contained in:
parent
1b114b0817
commit
142b2ac82e
@ -1692,20 +1692,30 @@ static void sd_rescan(struct device *dev)
|
||||
static int sd_compat_ioctl(struct block_device *bdev, fmode_t mode,
|
||||
unsigned int cmd, unsigned long arg)
|
||||
{
|
||||
struct scsi_device *sdev = scsi_disk(bdev->bd_disk)->device;
|
||||
struct gendisk *disk = bdev->bd_disk;
|
||||
struct scsi_disk *sdkp = scsi_disk(disk);
|
||||
struct scsi_device *sdev = sdkp->device;
|
||||
void __user *p = compat_ptr(arg);
|
||||
int error;
|
||||
|
||||
error = scsi_verify_blk_ioctl(bdev, cmd);
|
||||
if (error < 0)
|
||||
return error;
|
||||
|
||||
error = scsi_ioctl_block_when_processing_errors(sdev, cmd,
|
||||
(mode & FMODE_NDELAY) != 0);
|
||||
if (error)
|
||||
return error;
|
||||
|
||||
if (is_sed_ioctl(cmd))
|
||||
return sed_ioctl(sdkp->opal_dev, cmd, p);
|
||||
|
||||
/*
|
||||
* Let the static ioctl translation table take care of it.
|
||||
*/
|
||||
if (!sdev->host->hostt->compat_ioctl)
|
||||
return -ENOIOCTLCMD;
|
||||
return sdev->host->hostt->compat_ioctl(sdev, cmd, (void __user *)arg);
|
||||
return sdev->host->hostt->compat_ioctl(sdev, cmd, p);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user