lkml.org 
[lkml]   [2022]   [Apr]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.16 0929/1017] loop: fix ioctl calls using compat_loop_info
    Date
    From: Carlos Llamas <cmllamas@google.com>

    commit f941c51eeac7ebe0f8ec30943bf78e7f60aad039 upstream.

    Support for cryptoloop was deleted in commit 47e9624616c8 ("block:
    remove support for cryptoloop and the xor transfer"), making the usage
    of loop_info->lo_encrypt_type obsolete. However, this member was also
    removed from the compat_loop_info definition and this breaks userspace
    ioctl calls for 32-bit binaries and CONFIG_COMPAT=y.

    This patch restores the compat_loop_info->lo_encrypt_type member and
    marks it obsolete as well as in the uapi header definitions.

    Fixes: 47e9624616c8 ("block: remove support for cryptoloop and the xor transfer")
    Signed-off-by: Carlos Llamas <cmllamas@google.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/20220329201815.1347500-1-cmllamas@google.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/block/loop.c | 1 +
    include/uapi/linux/loop.h | 4 ++--
    2 files changed, 3 insertions(+), 2 deletions(-)

    --- a/drivers/block/loop.c
    +++ b/drivers/block/loop.c
    @@ -1603,6 +1603,7 @@ struct compat_loop_info {
    compat_ulong_t lo_inode; /* ioctl r/o */
    compat_dev_t lo_rdevice; /* ioctl r/o */
    compat_int_t lo_offset;
    + compat_int_t lo_encrypt_type; /* obsolete, ignored */
    compat_int_t lo_encrypt_key_size; /* ioctl w/o */
    compat_int_t lo_flags; /* ioctl r/o */
    char lo_name[LO_NAME_SIZE];
    --- a/include/uapi/linux/loop.h
    +++ b/include/uapi/linux/loop.h
    @@ -45,7 +45,7 @@ struct loop_info {
    unsigned long lo_inode; /* ioctl r/o */
    __kernel_old_dev_t lo_rdevice; /* ioctl r/o */
    int lo_offset;
    - int lo_encrypt_type;
    + int lo_encrypt_type; /* obsolete, ignored */
    int lo_encrypt_key_size; /* ioctl w/o */
    int lo_flags;
    char lo_name[LO_NAME_SIZE];
    @@ -61,7 +61,7 @@ struct loop_info64 {
    __u64 lo_offset;
    __u64 lo_sizelimit;/* bytes, 0 == max available */
    __u32 lo_number; /* ioctl r/o */
    - __u32 lo_encrypt_type;
    + __u32 lo_encrypt_type; /* obsolete, ignored */
    __u32 lo_encrypt_key_size; /* ioctl w/o */
    __u32 lo_flags;
    __u8 lo_file_name[LO_NAME_SIZE];

    \
     
     \ /
      Last update: 2022-04-05 15:53    [W:5.688 / U:4.000 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site