• masahiro31.yamada@kioxia.com's avatar
    nvme: Add compat_ioctl handler for NVME_IOCTL_SUBMIT_IO · c225b610
    masahiro31.yamada@kioxia.com authored
    Currently 32 bit application gets ENOTTY when it calls
    compat_ioctl with NVME_IOCTL_SUBMIT_IO in 64 bit kernel.
    
    The cause is that the results of sizeof(struct nvme_user_io),
    which is used to define NVME_IOCTL_SUBMIT_IO,
    are not same between 32 bit compiler and 64 bit compiler.
    
    * 32 bit: the result of sizeof nvme_user_io is 44.
    * 64 bit: the result of sizeof nvme_user_io is 48.
    
    64 bit compiler seems to add 32 bit padding for multiple of 8 bytes.
    
    This patch adds a compat_ioctl handler.
    The handler replaces NVME_IOCTL_SUBMIT_IO32 with NVME_IOCTL_SUBMIT_IO
    in case 32 bit application calls compat_ioctl for submit in 64 bit kernel.
    Then, it calls nvme_ioctl as usual.
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarMasahiro Yamada (KIOXIA) <masahiro31.yamada@kioxia.com>
    Signed-off-by: default avatarKeith Busch <kbusch@kernel.org>
    c225b610
core.c 110 KB