diff options
author | Jiri Slaby <jslaby@suse.cz> | 2010-01-06 00:24:31 -0500 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2010-01-14 21:20:08 -0500 |
commit | 4bf936b9e484bb8ee5f32bfd1351893810864f58 (patch) | |
tree | c1ae85550c155bdcd8eb482898d3c0ea52409975 | |
parent | c81b812a333818c5cc1be2e086c8509d853ebeeb (diff) |
powerpc: Use helpers for rlimits
Make sure compiler won't do weird things with limits. E.g. fetching
them twice may return 2 different values after writable limits are
implemented.
I.e. either use rlimit helpers added in
3e10e716abf3c71bdb5d86b8f507f9e72236c9cd
or ACCESS_ONCE if not applicable.
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: linuxppc-dev@ozlabs.org
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-rw-r--r-- | arch/powerpc/mm/mmap_64.c | 4 | ||||
-rw-r--r-- | arch/powerpc/platforms/cell/spufs/coredump.c | 2 |
2 files changed, 3 insertions, 3 deletions
diff --git a/arch/powerpc/mm/mmap_64.c b/arch/powerpc/mm/mmap_64.c index 0d957a4c70fe..5a783d8e8e8e 100644 --- a/arch/powerpc/mm/mmap_64.c +++ b/arch/powerpc/mm/mmap_64.c | |||
@@ -47,7 +47,7 @@ static inline int mmap_is_legacy(void) | |||
47 | if (current->personality & ADDR_COMPAT_LAYOUT) | 47 | if (current->personality & ADDR_COMPAT_LAYOUT) |
48 | return 1; | 48 | return 1; |
49 | 49 | ||
50 | if (current->signal->rlim[RLIMIT_STACK].rlim_cur == RLIM_INFINITY) | 50 | if (rlimit(RLIMIT_STACK) == RLIM_INFINITY) |
51 | return 1; | 51 | return 1; |
52 | 52 | ||
53 | return sysctl_legacy_va_layout; | 53 | return sysctl_legacy_va_layout; |
@@ -77,7 +77,7 @@ static unsigned long mmap_rnd(void) | |||
77 | 77 | ||
78 | static inline unsigned long mmap_base(void) | 78 | static inline unsigned long mmap_base(void) |
79 | { | 79 | { |
80 | unsigned long gap = current->signal->rlim[RLIMIT_STACK].rlim_cur; | 80 | unsigned long gap = rlimit(RLIMIT_STACK); |
81 | 81 | ||
82 | if (gap < MIN_GAP) | 82 | if (gap < MIN_GAP) |
83 | gap = MIN_GAP; | 83 | gap = MIN_GAP; |
diff --git a/arch/powerpc/platforms/cell/spufs/coredump.c b/arch/powerpc/platforms/cell/spufs/coredump.c index c4d4a19235e0..eea120229cdb 100644 --- a/arch/powerpc/platforms/cell/spufs/coredump.c +++ b/arch/powerpc/platforms/cell/spufs/coredump.c | |||
@@ -54,7 +54,7 @@ static ssize_t do_coredump_read(int num, struct spu_context *ctx, void *buffer, | |||
54 | */ | 54 | */ |
55 | static int spufs_dump_write(struct file *file, const void *addr, int nr, loff_t *foffset) | 55 | static int spufs_dump_write(struct file *file, const void *addr, int nr, loff_t *foffset) |
56 | { | 56 | { |
57 | unsigned long limit = current->signal->rlim[RLIMIT_CORE].rlim_cur; | 57 | unsigned long limit = rlimit(RLIMIT_CORE); |
58 | ssize_t written; | 58 | ssize_t written; |
59 | 59 | ||
60 | if (*foffset + nr > limit) | 60 | if (*foffset + nr > limit) |