mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Thomas Gleixner <tglx@linutronix.de>
To: Ley Foon Tan <lftan@altera.com>
Cc: linux-arch@vger.kernel.org, LKML <linux-kernel@vger.kernel.org>,
	linux-doc@vger.kernel.org, Arnd Bergmann <arnd@arndb.de>,
	lftan.linux@gmail.com, cltang@codesourcery.com,
	Peter Zijlstra <peterz@infradead.org>
Subject: Re: [PATCH v5 01/29] asm-generic: add generic futex for !CONFIG_SMP
Date: Sat, 25 Oct 2014 22:50:28 +0200 (CEST)	[thread overview]
Message-ID: <alpine.DEB.2.11.1410252243110.5308@nanos> (raw)
In-Reply-To: <1414139071-3818-2-git-send-email-lftan@altera.com>

B1;2802;0cOn Fri, 24 Oct 2014, Ley Foon Tan wrote:
> +#ifndef CONFIG_SMP
> +static inline int
> +futex_atomic_op_inuser(int encoded_op, u32 __user *uaddr)

If we add this to the generic code we want to have a proper docbook
comment describing the function.

> +{
> +	int op = (encoded_op >> 28) & 7;
> +	int cmp = (encoded_op >> 24) & 15;
> +	int oparg = (encoded_op << 8) >> 20;
> +	int cmparg = (encoded_op << 20) >> 20;
> +	int oldval, ret;
> +	u32 tmp;
> +
> +	if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28))
> +		oparg = 1 << oparg;
> +
> +	pagefault_disable();	/* implies preempt_disable() */

Now this mindlessly copied comment does not have any real value.

1) That pagefault_disable() implies preempt_disable() is an
   implementation detail which is not guaranteed to be true forever.

2) It's not telling at all, that this code really relies on both
   pagefault AND preemption being disabled.

> +
> +static inline int
> +futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
> +			      u32 oldval, u32 newval)
> +{

Docbook comment missing as well. But what's worse is, that it does not
explain what the calling convention for this function is.

As above it requires both pagefault AND preemption being disabled. The
fact that both are the same are again just an implementation detail of
todays code ....

> +	u32 val;
> +
> +	if (unlikely(get_user(val, uaddr) != 0))
> +		return -EFAULT;
> +
> +	if (val == oldval && unlikely(put_user(newval, uaddr) != 0))
> +		return -EFAULT;
> +
> +	*uval = val;
> +
> +	return 0;
> +}

Thanks,

	tglx

  reply	other threads:[~2014-10-25 20:50 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-24  8:24 [PATCH v5 00/29] nios2 Linux kernel port Ley Foon Tan
2014-10-24  8:24 ` [PATCH v5 01/29] asm-generic: add generic futex for !CONFIG_SMP Ley Foon Tan
2014-10-25 20:50   ` Thomas Gleixner [this message]
2014-10-24  8:24 ` [PATCH v5 02/29] nios2: Assembly macros and definitions Ley Foon Tan
2014-10-24  8:24 ` [PATCH v5 03/29] nios2: Kernel booting and initialization Ley Foon Tan
2014-10-24  8:24 ` [PATCH v5 04/29] nios2: Exception handling Ley Foon Tan
2014-10-24  9:15   ` Geert Uytterhoeven
2014-10-27  9:43     ` Ley Foon Tan
2014-10-24  8:24 ` [PATCH v5 05/29] nios2: Traps exception handling Ley Foon Tan
2014-10-24  8:24 ` [PATCH v5 06/29] nios2: Memory management Ley Foon Tan
2014-10-24  8:24 ` [PATCH v5 07/29] nios2: I/O Mapping Ley Foon Tan
2014-10-28 13:30   ` Arnd Bergmann
2014-10-29  7:00     ` Ley Foon Tan
2014-10-24  8:24 ` [PATCH v5 08/29] nios2: MMU Fault handling Ley Foon Tan
2014-10-24  8:24 ` [PATCH v5 09/29] nios2: Page table management Ley Foon Tan
2014-10-24  8:24 ` [PATCH v5 10/29] nios2: Process management Ley Foon Tan
2014-10-24  8:24 ` [PATCH v5 11/29] nios2: Cache handling Ley Foon Tan
2014-10-24  8:24 ` [PATCH v5 12/29] nios2: TLB handling Ley Foon Tan
2014-10-24  8:24 ` [PATCH v5 13/29] nios2: Interrupt handling Ley Foon Tan
2014-10-24  8:24 ` [PATCH v5 14/29] nios2: DMA mapping API Ley Foon Tan
2014-10-24  8:24 ` [PATCH v5 15/29] Add ELF machine define for Nios2 Ley Foon Tan
2014-10-24  8:24 ` [PATCH v5 16/29] nios2: ELF definitions Ley Foon Tan
2014-10-24  8:24 ` [PATCH v5 17/29] nios2: System calls handling Ley Foon Tan
2014-10-24  8:24 ` [PATCH v5 18/29] nios2: Signal handling support Ley Foon Tan
2014-10-24  8:24 ` [PATCH v5 19/29] nios2: Library functions Ley Foon Tan
2014-10-24  8:24 ` [PATCH v5 20/29] nios2: Device tree support Ley Foon Tan
2014-10-24  8:24 ` [PATCH v5 21/29] nios2: Time keeping Ley Foon Tan
2014-10-25 21:10   ` Thomas Gleixner
2014-10-28  2:46     ` Ley Foon Tan
2014-10-28  9:23       ` Arnd Bergmann
2014-10-28 10:43         ` Ley Foon Tan
2014-10-28 13:39           ` Arnd Bergmann
2014-10-29  7:36             ` Ley Foon Tan
2014-10-28 15:15           ` Thomas Gleixner
2014-10-30  9:03             ` Ley Foon Tan
2014-10-24  8:24 ` [PATCH v5 22/29] nios2: Cpuinfo handling Ley Foon Tan
2014-10-24  8:24 ` [PATCH v5 23/29] nios2: Miscellaneous header files Ley Foon Tan
2014-10-24  8:24 ` [PATCH v5 24/29] nios2: Nios2 registers Ley Foon Tan
2014-10-24  8:24 ` [PATCH v5 25/29] nios2: Module support Ley Foon Tan
2014-10-24  8:24 ` [PATCH v5 26/29] nios2: ptrace support Ley Foon Tan
2014-10-24  8:24 ` [PATCH v5 27/29] MAINTAINERS: Add nios2 maintainer Ley Foon Tan
2014-10-24  8:24 ` [PATCH v5 28/29] Documentation: Add documentation for Nios2 architecture Ley Foon Tan
2014-10-24  8:24 ` [PATCH v5 29/29] nios2: Build infrastructure Ley Foon Tan
2014-10-24  9:10   ` Geert Uytterhoeven
2014-10-27  9:44     ` Ley Foon Tan
2014-10-28 13:38   ` Arnd Bergmann
2014-10-30 10:44     ` Ley Foon Tan
2014-10-30 10:49       ` Thomas Gleixner
2014-10-30 11:33       ` Arnd Bergmann
2014-10-31  1:28         ` Ley Foon Tan

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=alpine.DEB.2.11.1410252243110.5308@nanos \
    --to=tglx@linutronix.de \
    --cc=arnd@arndb.de \
    --cc=cltang@codesourcery.com \
    --cc=lftan.linux@gmail.com \
    --cc=lftan@altera.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=peterz@infradead.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®