From: Cyrill Gorcunov <gorcu...@openvz.org> ML: 9c5990240e076ae564cccbd921868cd08f6daaa5
To eliminate code duplication lets introduce check_data_rlimit helper which we will use in brk() and prctl() syscalls. Signed-off-by: Cyrill Gorcunov <gorcu...@openvz.org> Cc: Kees Cook <keesc...@chromium.org> Cc: Tejun Heo <t...@kernel.org> Cc: Andrew Vagin <ava...@openvz.org> Cc: Eric W. Biederman <ebied...@xmission.com> Cc: H. Peter Anvin <h...@zytor.com> Acked-by: Serge Hallyn <serge.hal...@canonical.com> Cc: Pavel Emelyanov <xe...@parallels.com> Cc: Vasiliy Kulikov <seg...@openwall.com> Cc: KAMEZAWA Hiroyuki <kamezawa.hir...@jp.fujitsu.com> Cc: Michael Kerrisk <mtk.manpa...@gmail.com> Cc: Julien Tinnes <j...@google.com> Signed-off-by: Andrew Morton <a...@linux-foundation.org> Signed-off-by: Linus Torvalds <torva...@linux-foundation.org> Signed-off-by: Andrew Vagin <ava...@openvz.org> --- include/linux/mm.h | 15 +++++++++++++++ 1 files changed, 15 insertions(+), 0 deletions(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index 8424c6a..163d3d8 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -18,6 +18,7 @@ #include <linux/pfn.h> #include <linux/bit_spinlock.h> #include <linux/shrinker.h> +#include <linux/resource.h> struct mempolicy; struct anon_vma; @@ -1747,6 +1748,20 @@ extern struct vm_area_struct *copy_vma(struct vm_area_struct **, bool *need_rmap_locks); extern void exit_mmap(struct mm_struct *); +static inline int check_data_rlimit(unsigned long rlim, + unsigned long new, + unsigned long start, + unsigned long end_data, + unsigned long start_data) +{ + if (rlim < RLIM_INFINITY) { + if (((new - start) + (end_data - start_data)) > rlim) + return -ENOSPC; + } + + return 0; +} + extern int mm_take_all_locks(struct mm_struct *mm); extern void mm_drop_all_locks(struct mm_struct *mm); -- 1.7.1 _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel