Message ID | 1465749234-25746-1-git-send-email-mnghuan@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Ping. Any comment is appreciate. Thanks Minfei On 06/13/16 at 12:33P, Minfei Huang wrote: > The variable nr_pages is always more than 1, because the size of > structure aio_ring is bigger than 0. So remove unnecessary test for > nr_page. > > Signed-off-by: Minfei Huang <mnghuan@gmail.com> > --- > fs/aio.c | 2 -- > 1 file changed, 2 deletions(-) > > diff --git a/fs/aio.c b/fs/aio.c > index fb8e45b..ec05137 100644 > --- a/fs/aio.c > +++ b/fs/aio.c > @@ -450,8 +450,6 @@ static int aio_setup_ring(struct kioctx *ctx) > size += sizeof(struct io_event) * nr_events; > > nr_pages = PFN_UP(size); > - if (nr_pages < 0) > - return -EINVAL; > > file = aio_private_file(ctx, nr_pages); > if (IS_ERR(file)) { > -- > 2.7.4 (Apple Git-66) > -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Mon, Jun 20, 2016 at 10:05:45PM +0800, Minfei Huang wrote: > Ping. Any comment is appreciate. > > Thanks > Minfei > > On 06/13/16 at 12:33P, Minfei Huang wrote: > > The variable nr_pages is always more than 1, because the size of > > structure aio_ring is bigger than 0. So remove unnecessary test for > > nr_page. What this test really checks is that the value we'd put into nr_pages (PFN_UP(size)) is not greater than 2^31. Whether it's redundant or not is a separate question - it very well might be, due to the code in ioctx_alloc() that caps nr_events, but that needs a proof. In any case, the reasons you are offering in commit message are wrong - it's about size being too _large_, not too small. -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 06/20/16 at 03:17P, Al Viro wrote: > On Mon, Jun 20, 2016 at 10:05:45PM +0800, Minfei Huang wrote: > > Ping. Any comment is appreciate. > > > > Thanks > > Minfei > > > > On 06/13/16 at 12:33P, Minfei Huang wrote: > > > The variable nr_pages is always more than 1, because the size of > > > structure aio_ring is bigger than 0. So remove unnecessary test for > > > nr_page. > > What this test really checks is that the value we'd put into nr_pages > (PFN_UP(size)) is not greater than 2^31. Whether it's redundant or not > is a separate question - it very well might be, due to the code in > ioctx_alloc() that caps nr_events, but that needs a proof. In any case, > the reasons you are offering in commit message are wrong - it's about > size being too _large_, not too small. Hmm. But there is a following test in function ioctx_alloc which is used to limit the max of nr_events. 713 /* Prevent overflows */ 714 if (nr_events > (0x10000000U / sizeof(struct io_event))) { 715 pr_debug("ENOMEM: nr_events too high\n"); 716 return ERR_PTR(-EINVAL); 717 } So according to this test, we can make sure that nr_pages(PFN_UP(size)) cann't be greater than 2^31, and max to 2^28. Thanks Minfei -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/fs/aio.c b/fs/aio.c index fb8e45b..ec05137 100644 --- a/fs/aio.c +++ b/fs/aio.c @@ -450,8 +450,6 @@ static int aio_setup_ring(struct kioctx *ctx) size += sizeof(struct io_event) * nr_events; nr_pages = PFN_UP(size); - if (nr_pages < 0) - return -EINVAL; file = aio_private_file(ctx, nr_pages); if (IS_ERR(file)) {
The variable nr_pages is always more than 1, because the size of structure aio_ring is bigger than 0. So remove unnecessary test for nr_page. Signed-off-by: Minfei Huang <mnghuan@gmail.com> --- fs/aio.c | 2 -- 1 file changed, 2 deletions(-)