From a9a2731bdf4e9754d15c416f68beea06fd055b20 Mon Sep 17 00:00:00 2001 From: Miklos Szeredi Date: Wed, 9 Jun 2010 09:27:57 +0200 Subject: [PATCH] --- yaml --- r: 200315 b: refs/heads/master c: 6db40cf047a8723095caf79f5569d21b388d7b31 h: refs/heads/master i: 200313: 957a0d2e7708922065d1f7ac5b8586b5843b2b31 200311: c7d8b176dad4d45c9547c607510e9a4f4dadd08f v: v3 --- [refs] | 2 +- trunk/fs/pipe.c | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) 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;