From: Ingo Molnar <mingo@elte.hu>
To: Cyrill Gorcunov <gorcunov@openvz.org>
Cc: linux-kernel@vger.kernel.org,
Andrew Morton <akpm@linux-foundation.org>,
Pavel Emelyanov <xemul@parallels.com>,
Serge Hallyn <serge.hallyn@canonical.com>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
Kees Cook <keescook@chromium.org>, Tejun Heo <tj@kernel.org>,
Andrew Vagin <avagin@openvz.org>,
"Eric W. Biederman" <ebiederm@xmission.com>,
Alexey Dobriyan <adobriyan@gmail.com>,
Andi Kleen <andi@firstfloor.org>,
KOSAKI Motohiro <kosaki.motohiro@gmail.com>,
"H. Peter Anvin" <hpa@zytor.com>,
Thomas Gleixner <tglx@linutronix.de>,
Glauber Costa <glommer@parallels.com>,
Matt Helsley <matthltc@us.ibm.com>,
Pekka Enberg <penberg@kernel.org>,
Eric Dumazet <eric.dumazet@gmail.com>,
Vasiliy Kulikov <segoon@openwall.com>,
Valdis.Kletnieks@vt.edu
Subject: Re: [patch cr 2/4] [RFC] syscalls, x86: Add __NR_kcmp syscall v7
Date: Fri, 3 Feb 2012 08:46:56 +0100 [thread overview]
Message-ID: <20120203074656.GC30543@elte.hu> (raw)
In-Reply-To: <20120130141852.309402052@openvz.org>
* Cyrill Gorcunov <gorcunov@openvz.org> wrote:
> +/* Comparision type */
> + * We don't expose real in-memory order of objects for security
> + * reasons, still the comparision results should be suitable for
> + * sorting. Thus, we obfuscate kernel pointers values (using random
> + * cookies obtaned at early boot stage) and compare the production
> + * instead.
> + * 0 - equal
> + * 1 - less than
> + * 2 - greater than
> + * 3 - not equal but ordering unavailable (reserved for future)
Broken spelling in each of those comment blocks. Are these
comments write-only?
> + /*
> + * Tasks are looked up in caller's
> + * PID namespace only.
> + */
Could be a single line.
> +
> + task1 = find_task_by_vpid(pid1);
> + if (!task1) {
> + rcu_read_unlock();
> + return -ESRCH;
> + }
> +
> + task2 = find_task_by_vpid(pid2);
> + if (!task2) {
> + put_task_struct(task1);
> + rcu_read_unlock();
> + return -ESRCH;
> + }
This is not the standard pattern of how we do error paths ...
> + /*
> + * Note for all cases but the KCMP_FILE we
> + * don't take any locks in a sake of speed.
> + */
Spelling.
> + get_random_bytes(&cookies[i][j],
> + sizeof(cookies[i][j]));
ugly line break.
> +late_initcall(kcmp_cookie_init);
any particular reason why this needs to be a late initcall?
> --- /dev/null
> +++ linux-2.6.git/tools/testing/selftests/kcmp/Makefile
> @@ -0,0 +1,35 @@
> +ifeq ($(strip $(V)),)
> + E = @echo
> + Q = @
> +else
> + E = @\#
> + Q =
> +endif
> +export E Q
> +
> +uname_M := $(shell uname -m 2>/dev/null || echo not)
> +ARCH ?= $(shell echo $(uname_M) | sed -e s/i.86/i386/)
> +ifeq ($(ARCH),i386)
> + ARCH := X86
> + CFLAGS := -DCONFIG_X86_32
> +endif
> +ifeq ($(ARCH),x86_64)
> + ARCH := X86
> + CFLAGS := -DCONFIG_X86_64
> +endif
> +
> +CFLAGS += -I../../../../arch/x86/include/generated/
> +CFLAGS += -I../../../../include/
> +
> +all:
> +ifeq ($(ARCH),X86)
> + $(E) " CC run_test"
> + $(Q) gcc $(CFLAGS) kcmp_test.c -o run_test
> +else
> + $(E) "Not an x86 target, can't build breakpoints selftests"
> +endif
> +
> +clean:
> + $(E) " CLEAN"
> + $(Q) rm -fr ./run_test
> + $(Q) rm -fr ./test-file
Needs buy-in from the kbuild guys.
> +#ifdef CONFIG_X86_64
> +#include <asm/unistd_64.h>
> +#else
> +#include <asm/unistd_32.h>
> +#endif
Why is asm/unistd.h not good?
> +static long sys_kcmp(int pid1, int pid2, int type, int fd1, int fd2)
> +{
> + return syscall(__NR_kcmp, (long)pid1, (long)pid2,
> + (long)type, (long)fd1, (long)fd2);
> +}
Why is a syscall that takes long arguments defined and called
with int and then cast over to long again?
> + int pid2 = getpid();
> + int ret;
> +
> + fd2 = open("test-file", O_RDWR, 0644);
> + if (fd2 < 0) {
> + perror("Can't open file");
> + exit(1);
> + }
> +
> + /* An example of output and arguments */
> + printf("pid1: %6d pid2: %6d FD: %2d FILES: %2d VM: %2d FS: %2d "
> + "SIGHAND: %2d IO: %2d SYSVSEM: %2d INV: %2d\n",
Visibly stray whitespaces.
> + /* This one should return same fd */
> + ret = sys_kcmp(pid1, pid2, KCMP_FILE, fd1, fd1);
> + if (ret) {
> + printf("FAIL: 0 expected but %d returned\n", ret);
> + ret = -1;
> + } else
> + printf("PASS: 0 returned as expected\n");
> + exit(ret);
this is main(), what's wrong with the standard pattern of return
ret?
I don't know whether this code is correct, but the high amount
of basic cleanliness problems makes me worry about that.
Thanks,
Ingo
next prev parent reply other threads:[~2012-02-03 7:47 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-30 14:09 [patch cr 0/4] [patch cr 0/@total@] Cyrill Gorcunov
2012-01-30 14:09 ` [patch cr 1/4] fs, proc: Introduce /proc/<pid>/task/<tid>/children entry v9 Cyrill Gorcunov
2012-01-30 14:09 ` [patch cr 2/4] [RFC] syscalls, x86: Add __NR_kcmp syscall v7 Cyrill Gorcunov
2012-01-30 19:58 ` Jonathan Corbet
2012-01-30 21:07 ` Cyrill Gorcunov
2012-01-30 21:11 ` H. Peter Anvin
2012-02-02 23:26 ` Andrew Morton
2012-02-03 2:27 ` H. Peter Anvin
2012-02-03 7:09 ` Cyrill Gorcunov
2012-02-03 7:46 ` Ingo Molnar [this message]
2012-02-03 8:35 ` Cyrill Gorcunov
2012-02-03 9:09 ` Ingo Molnar
2012-02-03 9:22 ` Andrew Morton
2012-02-03 9:28 ` Cyrill Gorcunov
2012-02-03 17:32 ` H. Peter Anvin
2012-02-03 17:35 ` H. Peter Anvin
2012-02-03 17:42 ` Cyrill Gorcunov
2012-02-03 9:52 ` Ingo Molnar
2012-02-03 10:07 ` [PATCH] SubmittingPatches: Increase the line length limit from 80 to 100 colums Ingo Molnar
2012-02-03 10:17 ` Pekka Enberg
2012-02-03 10:23 ` Cyrill Gorcunov
2012-02-03 10:40 ` Alexey Dobriyan
2012-02-03 16:13 ` Tejun Heo
2012-02-03 16:39 ` hpanvin@gmail.com
2012-02-03 17:56 ` Andi Kleen
2012-02-03 20:57 ` Andrew Morton
2012-02-03 21:00 ` H. Peter Anvin
2012-02-03 21:06 ` H. Peter Anvin
2012-02-04 13:08 ` Ingo Molnar
2012-02-03 21:27 ` Linus Torvalds
2012-02-03 23:20 ` [PATCH] checkpatch: Warn on code with 6+ tab indentation Joe Perches
2012-02-04 1:27 ` Linus Torvalds
2012-02-04 1:33 ` Joe Perches
2012-02-04 3:09 ` Linus Torvalds
2012-02-04 3:21 ` Joe Perches
2012-02-04 3:35 ` Linus Torvalds
2012-02-04 3:58 ` Joe Perches
2012-02-04 1:37 ` Andrew Morton
2012-02-04 2:40 ` Eric W. Biederman
2012-02-04 2:46 ` Joe Perches
2012-02-04 4:45 ` Tony Luck
2012-02-04 4:53 ` Joe Perches
2012-02-04 13:03 ` [PATCH, v2] checkpatch: Warn on code with 6+ tab indentation, remove 80col warning Ingo Molnar
2012-02-04 16:22 ` Joe Perches
2012-02-04 18:02 ` Ingo Molnar
2012-02-04 18:48 ` Joe Perches
2012-02-04 18:54 ` Pekka Enberg
2012-02-04 19:27 ` Joe Perches
2012-02-04 19:32 ` Pekka Enberg
2012-02-05 11:38 ` Ingo Molnar
2012-02-05 16:21 ` Joe Perches
2012-02-05 18:13 ` Ingo Molnar
2012-02-05 19:01 ` [PATCH] checkpatch: Add line-length options, set default to 100 Joe Perches
2012-02-06 12:36 ` Dan Carpenter
2012-02-04 1:24 ` [PATCH] SubmittingPatches: Increase the line length limit from 80 to 100 colums Randy Dunlap
2012-02-09 21:55 ` Jan Engelhardt
2012-02-09 22:09 ` Joe Perches
2012-02-09 22:30 ` Mark Brown
2012-01-30 14:09 ` [patch cr 3/4] c/r: procfs: add arg_start/end, env_start/end and exit_code members to /proc/$pid/stat Cyrill Gorcunov
2012-02-02 23:26 ` Andrew Morton
2012-02-03 7:11 ` Cyrill Gorcunov
2012-01-30 14:09 ` [patch cr 4/4] c/r: prctl: Extend PR_SET_MM to set up more mm_struct entries Cyrill Gorcunov
2012-02-02 23:27 ` Andrew Morton
2012-02-03 7:18 ` Cyrill Gorcunov
2012-02-02 23:26 ` [patch cr 0/4] [patch cr 0/@total@] Andrew Morton
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120203074656.GC30543@elte.hu \
--to=mingo@elte.hu \
--cc=Valdis.Kletnieks@vt.edu \
--cc=adobriyan@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=andi@firstfloor.org \
--cc=avagin@openvz.org \
--cc=ebiederm@xmission.com \
--cc=eric.dumazet@gmail.com \
--cc=glommer@parallels.com \
--cc=gorcunov@openvz.org \
--cc=hpa@zytor.com \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=keescook@chromium.org \
--cc=kosaki.motohiro@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=matthltc@us.ibm.com \
--cc=penberg@kernel.org \
--cc=segoon@openwall.com \
--cc=serge.hallyn@canonical.com \
--cc=tglx@linutronix.de \
--cc=tj@kernel.org \
--cc=xemul@parallels.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.