]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blob - src/patches/suse-2.6.27.31/patches.fixes/mm-madvise-fix.patch
Reenabled linux-xen, added patches for Xen Kernel Version 2.6.27.31,
[people/teissler/ipfire-2.x.git] / src / patches / suse-2.6.27.31 / patches.fixes / mm-madvise-fix.patch
1 From: Nick Piggin <npiggin@suse.de>
2 Subject: mm: madvise correct return code
3 References: bnc#352998
4
5 madvise should return -EINVAL if passed in an invalid flag, even if the
6 requested range is 0.
7
8 Signed-off-by: Nick Piggin <npiggin@suse.de>
9 ---
10 ---
11 mm/madvise.c | 23 ++++++++++++++++++++++-
12 1 file changed, 22 insertions(+), 1 deletion(-)
13
14 --- a/mm/madvise.c
15 +++ b/mm/madvise.c
16 @@ -247,12 +247,30 @@ madvise_vma(struct vm_area_struct *vma,
17 break;
18
19 default:
20 - error = -EINVAL;
21 + BUG();
22 break;
23 }
24 return error;
25 }
26
27 +static int
28 +madvise_behavior_valid(int behavior)
29 +{
30 + switch (behavior) {
31 + case MADV_DOFORK:
32 + case MADV_DONTFORK:
33 + case MADV_NORMAL:
34 + case MADV_SEQUENTIAL:
35 + case MADV_RANDOM:
36 + case MADV_REMOVE:
37 + case MADV_WILLNEED:
38 + case MADV_DONTNEED:
39 + return 1;
40 +
41 + default:
42 + return 0;
43 + }
44 +}
45 /*
46 * The madvise(2) system call.
47 *
48 @@ -298,6 +316,9 @@ SYSCALL_DEFINE3(madvise, unsigned long,
49 int write;
50 size_t len;
51
52 + if (!madvise_behavior_valid(behavior))
53 + return error;
54 +
55 write = madvise_need_mmap_write(behavior);
56 if (write)
57 down_write(&current->mm->mmap_sem);