lkml.org 
[lkml]   [2019]   [Nov]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.19 161/205] media: dvb: fix compat ioctl translation
    Date
    From: Arnd Bergmann <arnd@arndb.de>

    [ Upstream commit 1ccbeeb888ac33627d91f1ccf0b84ef3bcadef24 ]

    The VIDEO_GET_EVENT and VIDEO_STILLPICTURE was added back in 2005 but
    it never worked because the command number is wrong.

    Using the right command number means we have a better chance of them
    actually doing the right thing, though clearly nobody has ever tried
    it successfully.

    I noticed these while auditing the remaining users of compat_time_t
    for y2038 bugs. This one is fine in that regard, it just never did
    anything.

    Fixes: 6e87abd0b8cb ("[DVB]: Add compat ioctl handling.")

    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    fs/compat_ioctl.c | 10 ++++++----
    1 file changed, 6 insertions(+), 4 deletions(-)

    diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c
    index 8f08095ee54e9..3a03f74a8cc4e 100644
    --- a/fs/compat_ioctl.c
    +++ b/fs/compat_ioctl.c
    @@ -141,6 +141,7 @@ struct compat_video_event {
    unsigned int frame_rate;
    } u;
    };
    +#define VIDEO_GET_EVENT32 _IOR('o', 28, struct compat_video_event)

    static int do_video_get_event(struct file *file,
    unsigned int cmd, struct compat_video_event __user *up)
    @@ -152,7 +153,7 @@ static int do_video_get_event(struct file *file,
    if (kevent == NULL)
    return -EFAULT;

    - err = do_ioctl(file, cmd, (unsigned long)kevent);
    + err = do_ioctl(file, VIDEO_GET_EVENT, (unsigned long)kevent);
    if (!err) {
    err = convert_in_user(&kevent->type, &up->type);
    err |= convert_in_user(&kevent->timestamp, &up->timestamp);
    @@ -171,6 +172,7 @@ struct compat_video_still_picture {
    compat_uptr_t iFrame;
    int32_t size;
    };
    +#define VIDEO_STILLPICTURE32 _IOW('o', 30, struct compat_video_still_picture)

    static int do_video_stillpicture(struct file *file,
    unsigned int cmd, struct compat_video_still_picture __user *up)
    @@ -193,7 +195,7 @@ static int do_video_stillpicture(struct file *file,
    if (err)
    return -EFAULT;

    - err = do_ioctl(file, cmd, (unsigned long) up_native);
    + err = do_ioctl(file, VIDEO_STILLPICTURE, (unsigned long) up_native);

    return err;
    }
    @@ -1302,9 +1304,9 @@ static long do_ioctl_trans(unsigned int cmd,
    return rtc_ioctl(file, cmd, argp);

    /* dvb */
    - case VIDEO_GET_EVENT:
    + case VIDEO_GET_EVENT32:
    return do_video_get_event(file, cmd, argp);
    - case VIDEO_STILLPICTURE:
    + case VIDEO_STILLPICTURE32:
    return do_video_stillpicture(file, cmd, argp);
    }

    --
    2.20.1
    \
     
     \ /
      Last update: 2019-11-08 13:06    [W:4.045 / U:0.700 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site