diff --git a/[refs] b/[refs] index e1bb274a9aae..07aedea02e47 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1d862f41222b7f385bada9f85a67ca5592ffd33e +refs/heads/master: 6db40cf047a8723095caf79f5569d21b388d7b31 diff --git a/trunk/fs/pipe.c b/trunk/fs/pipe.c index f31e2d472984..279eef96c51c 100644 --- a/trunk/fs/pipe.c +++ b/trunk/fs/pipe.c @@ -1215,12 +1215,13 @@ long pipe_fcntl(struct file *file, unsigned int cmd, unsigned long arg) size = round_pipe_size(arg); nr_pages = size >> PAGE_SHIFT; + ret = -EINVAL; + if (!nr_pages) + goto out; + if (!capable(CAP_SYS_RESOURCE) && size > pipe_max_size) { ret = -EPERM; goto out; - } else if (nr_pages < PAGE_SIZE) { - ret = -EINVAL; - goto out; } ret = pipe_set_size(pipe, nr_pages); break;