Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b80d60e1 authored by Linus Torvalds's avatar Linus Torvalds
Browse files


Pull PARISC fixes from James Bottomley:
 "This is two bug fixes: one fixes a loophole where rt_sigprocmask()
  with the wrong values panics the box (Denial of Service) and the other
  fixes an aliasing problem with get_shared_area() which could cause
  data corruption.

  Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com&gt;">

* tag 'parisc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/parisc-2.6:
  [PARISC] fix user-triggerable panic on parisc
  [PARISC] fix virtual aliasing issue in get_shared_area()
parents a2d2eda7 441a179d
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -65,7 +65,8 @@ put_sigset32(compat_sigset_t __user *up, sigset_t *set, size_t sz)
{
	compat_sigset_t s;

	if (sz != sizeof *set) panic("put_sigset32()");
	if (sz != sizeof *set)
		return -EINVAL;
	sigset_64to32(&s, set);

	return copy_to_user(up, &s, sizeof s);
@@ -77,7 +78,8 @@ get_sigset32(compat_sigset_t __user *up, sigset_t *set, size_t sz)
	compat_sigset_t s;
	int r;

	if (sz != sizeof *set) panic("put_sigset32()");
	if (sz != sizeof *set)
		return -EINVAL;

	if ((r = copy_from_user(&s, up, sz)) == 0) {
		sigset_32to64(set, &s);
+2 −0
Original line number Diff line number Diff line
@@ -73,6 +73,8 @@ static unsigned long get_shared_area(struct address_space *mapping,
	struct vm_area_struct *vma;
	int offset = mapping ? get_offset(mapping) : 0;

	offset = (offset + (pgoff << PAGE_SHIFT)) & 0x3FF000;

	addr = DCACHE_ALIGN(addr - offset) + offset;

	for (vma = find_vma(current->mm, addr); ; vma = vma->vm_next) {