[PATCH] io_uring/rsrc: remove unnecessary check on resv2

clingfei posted 1 patch 1 week, 1 day ago
io_uring/rsrc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] io_uring/rsrc: remove unnecessary check on resv2
Posted by clingfei 1 week, 1 day ago
From b52509776e0f7f9ea703d0551ccaeeaa49ab6440 Mon Sep 17 00:00:00 2001
From: clingfei <clf700383@gmail.com>
Date: Tue, 23 Sep 2025 16:30:30 +0800
Subject: [PATCH] io_uring/rsrc: remove unnecessary check on resv2

The memset sets the up.resv2 to be 0,
and the copy_from_user does not touch it,
thus up.resv2 will always be false.

Signed-off-by: clingfei <clf700383@gmail.com>
---
 io_uring/rsrc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/io_uring/rsrc.c b/io_uring/rsrc.c
index f75f5e43fa4a..7006b3ca5404 100644
--- a/io_uring/rsrc.c
+++ b/io_uring/rsrc.c
@@ -372,7 +372,7 @@ int io_register_files_update(struct io_ring_ctx
*ctx, void __user *arg,
    memset(&up, 0, sizeof(up));
    if (copy_from_user(&up, arg, sizeof(struct io_uring_rsrc_update)))
        return -EFAULT;
-   if (up.resv || up.resv2)
+   if (up.resv)
        return -EINVAL;
    return __io_register_rsrc_update(ctx, IORING_RSRC_FILE, &up, nr_args);
 }
-- 
2.34.1
Re: [PATCH] io_uring/rsrc: remove unnecessary check on resv2
Posted by Jens Axboe 1 week, 1 day ago
On 9/23/25 2:41 AM, clingfei wrote:
> From b52509776e0f7f9ea703d0551ccaeeaa49ab6440 Mon Sep 17 00:00:00 2001
> From: clingfei <clf700383@gmail.com>
> Date: Tue, 23 Sep 2025 16:30:30 +0800
> Subject: [PATCH] io_uring/rsrc: remove unnecessary check on resv2
> 
> The memset sets the up.resv2 to be 0,
> and the copy_from_user does not touch it,
> thus up.resv2 will always be false.

Please wrap commit messages at around ~72 chars.

> Signed-off-by: clingfei <clf700383@gmail.com>
> ---
>  io_uring/rsrc.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/io_uring/rsrc.c b/io_uring/rsrc.c
> index f75f5e43fa4a..7006b3ca5404 100644
> --- a/io_uring/rsrc.c
> +++ b/io_uring/rsrc.c
> @@ -372,7 +372,7 @@ int io_register_files_update(struct io_ring_ctx
> *ctx, void __user *arg,
>     memset(&up, 0, sizeof(up));
>     if (copy_from_user(&up, arg, sizeof(struct io_uring_rsrc_update)))
>         return -EFAULT;
> -   if (up.resv || up.resv2)
> +   if (up.resv)
>         return -EINVAL;
>     return __io_register_rsrc_update(ctx, IORING_RSRC_FILE, &up, nr_args);
>  }

White space damaged patch, but more importantly, I don't think this is
worth adding. Yes it'll never overwrite resv2 because of the different
sizes. Curious how you ran into this?

-- 
Jens Axboe
Re: [PATCH] io_uring/rsrc: remove unnecessary check on resv2
Posted by clingfei 1 week, 1 day ago
Jens Axboe <axboe@kernel.dk> 于2025年9月23日周二 16:50写道:
>
> On 9/23/25 2:41 AM, clingfei wrote:
> > From b52509776e0f7f9ea703d0551ccaeeaa49ab6440 Mon Sep 17 00:00:00 2001
> > From: clingfei <clf700383@gmail.com>
> > Date: Tue, 23 Sep 2025 16:30:30 +0800
> > Subject: [PATCH] io_uring/rsrc: remove unnecessary check on resv2
> >
> > The memset sets the up.resv2 to be 0,
> > and the copy_from_user does not touch it,
> > thus up.resv2 will always be false.
>
> Please wrap commit messages at around ~72 chars.
>
> > Signed-off-by: clingfei <clf700383@gmail.com>
> > ---
> >  io_uring/rsrc.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/io_uring/rsrc.c b/io_uring/rsrc.c
> > index f75f5e43fa4a..7006b3ca5404 100644
> > --- a/io_uring/rsrc.c
> > +++ b/io_uring/rsrc.c
> > @@ -372,7 +372,7 @@ int io_register_files_update(struct io_ring_ctx
> > *ctx, void __user *arg,
> >     memset(&up, 0, sizeof(up));
> >     if (copy_from_user(&up, arg, sizeof(struct io_uring_rsrc_update)))
> >         return -EFAULT;
> > -   if (up.resv || up.resv2)
> > +   if (up.resv)
> >         return -EINVAL;
> >     return __io_register_rsrc_update(ctx, IORING_RSRC_FILE, &up, nr_args);
> >  }
>
> White space damaged patch, but more importantly, I don't think this is
> worth adding. Yes it'll never overwrite resv2 because of the different
> sizes. Curious how you ran into this?
>
> --
> Jens Axboe

During my review of the io_uring code, I noticed that
sizeof(io_uring_rsrc_update) is used to initialize a struct
io_uring_rsrc_update2. My initial suspicion was that this might be an
error, but upon closer inspection, I verified that this usage is
intentional and correct.
Re: [PATCH] io_uring/rsrc: remove unnecessary check on resv2
Posted by Jens Axboe 1 week, 1 day ago
On 9/23/25 3:10 AM, clingfei wrote:
> Jens Axboe <axboe@kernel.dk> ?2025?9?23??? 16:50???
>>
>> On 9/23/25 2:41 AM, clingfei wrote:
>>> From b52509776e0f7f9ea703d0551ccaeeaa49ab6440 Mon Sep 17 00:00:00 2001
>>> From: clingfei <clf700383@gmail.com>
>>> Date: Tue, 23 Sep 2025 16:30:30 +0800
>>> Subject: [PATCH] io_uring/rsrc: remove unnecessary check on resv2
>>>
>>> The memset sets the up.resv2 to be 0,
>>> and the copy_from_user does not touch it,
>>> thus up.resv2 will always be false.
>>
>> Please wrap commit messages at around ~72 chars.
>>
>>> Signed-off-by: clingfei <clf700383@gmail.com>
>>> ---
>>>  io_uring/rsrc.c | 2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/io_uring/rsrc.c b/io_uring/rsrc.c
>>> index f75f5e43fa4a..7006b3ca5404 100644
>>> --- a/io_uring/rsrc.c
>>> +++ b/io_uring/rsrc.c
>>> @@ -372,7 +372,7 @@ int io_register_files_update(struct io_ring_ctx
>>> *ctx, void __user *arg,
>>>     memset(&up, 0, sizeof(up));
>>>     if (copy_from_user(&up, arg, sizeof(struct io_uring_rsrc_update)))
>>>         return -EFAULT;
>>> -   if (up.resv || up.resv2)
>>> +   if (up.resv)
>>>         return -EINVAL;
>>>     return __io_register_rsrc_update(ctx, IORING_RSRC_FILE, &up, nr_args);
>>>  }
>>
>> White space damaged patch, but more importantly, I don't think this is
>> worth adding. Yes it'll never overwrite resv2 because of the different
>> sizes. Curious how you ran into this?
>>
>> --
>> Jens Axboe
> 
> During my review of the io_uring code, I noticed that
> sizeof(io_uring_rsrc_update) is used to initialize a struct
> io_uring_rsrc_update2. My initial suspicion was that this might be an
> error, but upon closer inspection, I verified that this usage is
> intentional and correct.

Gotcha. Yes it overlays the struct. I'm not vehemently opposed to your
patch, but it'd be nice if it came with a comment as well as to why just
checking the first part is enough. And, of course, with the other things
I mentioned fixed too. So feel free to resend, if you wish.

-- 
Jens Axboe