lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Date:	Tue, 1 Apr 2014 15:12:11 +1100
From:	Stephen Rothwell <sfr@...b.auug.org.au>
To:	Eric Paris <eparis@...hat.com>, David Miller <davem@...emloft.net>,
	<netdev@...r.kernel.org>
Cc:	linux-next@...r.kernel.org, linux-kernel@...r.kernel.org,
	Alexei Starovoitov <ast@...mgrid.com>
Subject: linux-next: manual merge of the audit tree with the net-next tree

Hi all,

Today's linux-next merge of the audit tree got a conflict in
kernel/seccomp.c between commit bd4cf0ed331a ("net: filter:
rework/optimize internal BPF interpreter's instruction set") from the
net-next tree and commit 5e937a9ae913 ("syscall_get_arch: remove useless
function arguments") from the audit tree.

I fixed it up (see below) and can carry the fix as necessary (no action
is required).

-- 
Cheers,
Stephen Rothwell                    sfr@...b.auug.org.au

diff --cc kernel/seccomp.c
index fd609bd9d6dd,eda2da3df822..000000000000
--- a/kernel/seccomp.c
+++ b/kernel/seccomp.c
@@@ -65,23 -74,41 +65,23 @@@ struct seccomp_filter 
   * Endianness is explicitly ignored and left for BPF program authors to manage
   * as per the specific architecture.
   */
 -static inline u32 get_u32(u64 data, int index)
 +static void populate_seccomp_data(struct seccomp_data *sd)
  {
 -	return ((u32 *)&data)[index];
 -}
 +	struct task_struct *task = current;
 +	struct pt_regs *regs = task_pt_regs(task);
  
 -/* Helper for bpf_load below. */
 -#define BPF_DATA(_name) offsetof(struct seccomp_data, _name)
 -/**
 - * bpf_load: checks and returns a pointer to the requested offset
 - * @off: offset into struct seccomp_data to load from
 - *
 - * Returns the requested 32-bits of data.
 - * seccomp_check_filter() should assure that @off is 32-bit aligned
 - * and not out of bounds.  Failure to do so is a BUG.
 - */
 -u32 seccomp_bpf_load(int off)
 -{
 -	struct pt_regs *regs = task_pt_regs(current);
 -	if (off == BPF_DATA(nr))
 -		return syscall_get_nr(current, regs);
 -	if (off == BPF_DATA(arch))
 -		return syscall_get_arch();
 -	if (off >= BPF_DATA(args[0]) && off < BPF_DATA(args[6])) {
 -		unsigned long value;
 -		int arg = (off - BPF_DATA(args[0])) / sizeof(u64);
 -		int index = !!(off % sizeof(u64));
 -		syscall_get_arguments(current, regs, arg, 1, &value);
 -		return get_u32(value, index);
 -	}
 -	if (off == BPF_DATA(instruction_pointer))
 -		return get_u32(KSTK_EIP(current), 0);
 -	if (off == BPF_DATA(instruction_pointer) + sizeof(u32))
 -		return get_u32(KSTK_EIP(current), 1);
 -	/* seccomp_check_filter should make this impossible. */
 -	BUG();
 +	sd->nr = syscall_get_nr(task, regs);
- 	sd->arch = syscall_get_arch(task, regs);
++	sd->arch = syscall_get_arch();
 +
 +	/* Unroll syscall_get_args to help gcc on arm. */
 +	syscall_get_arguments(task, regs, 0, 1, (unsigned long *) &sd->args[0]);
 +	syscall_get_arguments(task, regs, 1, 1, (unsigned long *) &sd->args[1]);
 +	syscall_get_arguments(task, regs, 2, 1, (unsigned long *) &sd->args[2]);
 +	syscall_get_arguments(task, regs, 3, 1, (unsigned long *) &sd->args[3]);
 +	syscall_get_arguments(task, regs, 4, 1, (unsigned long *) &sd->args[4]);
 +	syscall_get_arguments(task, regs, 5, 1, (unsigned long *) &sd->args[5]);
 +
 +	sd->instruction_pointer = KSTK_EIP(task);
  }
  
  /**

Content of type "application/pgp-signature" skipped

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ