openwrt/staging/blogic.git
12 years agodrivers/rapidio/rio-scan.c: make functions static
Wu Fengguang [Wed, 3 Jul 2013 22:08:49 +0000 (15:08 -0700)]
drivers/rapidio/rio-scan.c: make functions static

sparse warnings:

drivers/rapidio/rio-scan.c:1143:5: sparse: symbol 'rio_enum_mport' was not declared. Should it be static?
drivers/rapidio/rio-scan.c:1246:5: sparse: symbol 'rio_disc_mport' was not declared. Should it be static?

Signed-off-by: Fengguang Wu <[email protected]>
Cc: "Bounine, Alexandre" <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agorapidio/switches: remove tsi500 driver
Alexandre Bounine [Wed, 3 Jul 2013 22:08:48 +0000 (15:08 -0700)]
rapidio/switches: remove tsi500 driver

Remove the driver for Tsi500 Parallel RapidIO switch because this device
has not been available for several years.  Since the first introduction of
Tsi500, the parallel RapidIO interface was replaced by the serial RapidIO
(sRIO) and therefore there is no value in keeping this driver.

Signed-off-by: Alexandre Bounine <[email protected]>
Cc: Matt Porter <[email protected]>
Cc: Li Yang <[email protected]>
Cc: Kumar Gala <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agoidr: print a stack dump after ida_remove warning
Jean Delvare [Wed, 3 Jul 2013 22:08:47 +0000 (15:08 -0700)]
idr: print a stack dump after ida_remove warning

We print a dump stack after idr_remove warning.  This is useful to find
the faulty piece of code.  Let's do the same for ida_remove, as it would
be equally useful there.

[[email protected]: convert the open-coded printk+dump_stack into WARN()]
Signed-off-by: Jean Delvare <[email protected]>
Cc: Tejun Heo <[email protected]>
Cc: Takashi Iwai <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agos390: remove setting for saved_max_pfn
Zhang Yanfei [Wed, 3 Jul 2013 22:08:45 +0000 (15:08 -0700)]
s390: remove setting for saved_max_pfn

The only user of saved_max_pfn in s390 is read_oldmem interface but we
have removed that interface, so saved_max_pfn is now unneeded in s390, and
we needn't set it anymore.

Signed-off-by: Zhang Yanfei <[email protected]>
Cc: Martin Schwidefsky <[email protected]>
Cc: Heiko Carstens <[email protected]>
Cc: Michael Holzheu <[email protected]>
Cc: "Eric W. Biederman" <[email protected]>
Cc: "H. Peter Anvin" <[email protected]>
Cc: Benjamin Herrenschmidt <[email protected]>
Cc: Dave Hansen <[email protected]>
Cc: Fenghua Yu <[email protected]>
Cc: Matt Fleming <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Ralf Baechle <[email protected]>
Cc: Tony Luck <[email protected]>
Cc: Vivek Goyal <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agoia64: remove setting for saved_max_pfn
Zhang Yanfei [Wed, 3 Jul 2013 22:08:44 +0000 (15:08 -0700)]
ia64: remove setting for saved_max_pfn

The only user of saved_max_pfn in ia64 is read_oldmem interface but we
have removed that interface, so saved_max_pfn is now unneeded in ia64, and
we needn't set it anymore.

Signed-off-by: Zhang Yanfei <[email protected]>
Cc: Matt Fleming <[email protected]>
Cc: Tony Luck <[email protected]>
Cc: Fenghua Yu <[email protected]>
Cc: "Eric W. Biederman" <[email protected]>
Cc: "H. Peter Anvin" <[email protected]>
Cc: Benjamin Herrenschmidt <[email protected]>
Cc: Dave Hansen <[email protected]>
Cc: Heiko Carstens <[email protected]>
Cc: Martin Schwidefsky <[email protected]>
Cc: Michael Holzheu <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Ralf Baechle <[email protected]>
Cc: Vivek Goyal <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agopowerpc: Remove savemaxmem parameter setup
Zhang Yanfei [Wed, 3 Jul 2013 22:08:42 +0000 (15:08 -0700)]
powerpc: Remove savemaxmem parameter setup

saved_max_pfn is used to know the amount of memory that the previous
kernel used.  And for powerpc, we set saved_max_pfn by passing the kernel
commandline parameter "savemaxmem=".

The only user of saved_max_pfn in powerpc is read_oldmem interface.  Since
we have removed read_oldmem, we don't need this parameter anymore.

Signed-off-by: Zhang Yanfei <[email protected]>
Cc: Benjamin Herrenschmidt <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: "Eric W. Biederman" <[email protected]>
Cc: "H. Peter Anvin" <[email protected]>
Cc: Dave Hansen <[email protected]>
Cc: Fenghua Yu <[email protected]>
Cc: Heiko Carstens <[email protected]>
Cc: Martin Schwidefsky <[email protected]>
Cc: Matt Fleming <[email protected]>
Cc: Michael Holzheu <[email protected]>
Cc: Ralf Baechle <[email protected]>
Cc: Tony Luck <[email protected]>
Cc: Vivek Goyal <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agomips: remove savemaxmem parameter setup
Zhang Yanfei [Wed, 3 Jul 2013 22:08:40 +0000 (15:08 -0700)]
mips: remove savemaxmem parameter setup

saved_max_pfn is used to know the amount of memory that the previous
kernel used.  And for powerpc, we set saved_max_pfn by passing the kernel
commandline parameter "savemaxmem=".

The only user of saved_max_pfn in mips is read_oldmem interface.  Since we
have removed read_oldmem, so we don't need this parameter anymore.

Signed-off-by: Zhang Yanfei <[email protected]>
Cc: Ralf Baechle <[email protected]>
Cc: "Eric W. Biederman" <[email protected]>
Cc: "H. Peter Anvin" <[email protected]>
Cc: Benjamin Herrenschmidt <[email protected]>
Cc: Dave Hansen <[email protected]>
Cc: Fenghua Yu <[email protected]>
Cc: Heiko Carstens <[email protected]>
Cc: Martin Schwidefsky <[email protected]>
Cc: Matt Fleming <[email protected]>
Cc: Michael Holzheu <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Tony Luck <[email protected]>
Cc: Vivek Goyal <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agoDocumentation/kdump/kdump.txt: remove /dev/oldmem description
Zhang Yanfei [Wed, 3 Jul 2013 22:08:38 +0000 (15:08 -0700)]
Documentation/kdump/kdump.txt: remove /dev/oldmem description

Signed-off-by: Zhang Yanfei <[email protected]>
Cc: Vivek Goyal <[email protected]>
Cc: "Eric W. Biederman" <[email protected]>
Cc: "H. Peter Anvin" <[email protected]>
Cc: Benjamin Herrenschmidt <[email protected]>
Cc: Dave Hansen <[email protected]>
Cc: Fenghua Yu <[email protected]>
Cc: Heiko Carstens <[email protected]>
Cc: Martin Schwidefsky <[email protected]>
Cc: Matt Fleming <[email protected]>
Cc: Michael Holzheu <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Ralf Baechle <[email protected]>
Cc: Tony Luck <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years ago/dev/oldmem: Remove the interface
Zhang Yanfei [Wed, 3 Jul 2013 22:08:36 +0000 (15:08 -0700)]
/dev/oldmem: Remove the interface

/dev/oldmem provides the interface for us to access the "old memory" in
the dump-capture kernel.  Unfortunately, no one actually uses this
interface.

And this interface could actually cause some real problems if used on ia64
where the cached/uncached accesses are mixed.  See the discussion from the
link: https://lkml.org/lkml/2013/4/12/386.
So Eric suggested that we should remove /dev/oldmem as an unused piece of
code.

[[email protected]: mention /dev/oldmem obsolescence in devices.txt]
Suggested-by: "Eric W. Biederman" <[email protected]>
Signed-off-by: Zhang Yanfei <[email protected]>
Cc: Vivek Goyal <[email protected]>
Cc: Dave Hansen <[email protected]>
Cc: "H. Peter Anvin" <[email protected]>
Cc: "H. Peter Anvin" <[email protected]>
Cc: Benjamin Herrenschmidt <[email protected]>
Cc: Fenghua Yu <[email protected]>
Cc: Heiko Carstens <[email protected]>
Cc: Martin Schwidefsky <[email protected]>
Cc: Matt Fleming <[email protected]>
Cc: Michael Holzheu <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Ralf Baechle <[email protected]>
Cc: Tony Luck <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agofs/exec.c:de_thread: mt-exec should update ->real_start_time
Oleg Nesterov [Wed, 3 Jul 2013 22:08:35 +0000 (15:08 -0700)]
fs/exec.c:de_thread: mt-exec should update ->real_start_time

924b42d5 ("Use boot based time for process start time and boot time in
/proc") updated copy_process/do_task_stat but forgot about de_thread().
This breaks "ps axOT" if a sub-thread execs.

Note: I think that task->start_time should die.

Signed-off-by: Oleg Nesterov <[email protected]>
Cc: "Eric W. Biederman" <[email protected]>
Acked-by: John Stultz <[email protected]>
Cc: Tomas Janousek <[email protected]>
Cc: Tomas Smetana <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agofs/exec.c: do_execve_common(): use current_user()
Oleg Nesterov [Wed, 3 Jul 2013 22:08:34 +0000 (15:08 -0700)]
fs/exec.c: do_execve_common(): use current_user()

Trivial cleanup.  do_execve_common() can use current_user() and avoid the
unnecessary "struct cred *cred" var.

Signed-off-by: Oleg Nesterov <[email protected]>
Cc: Vasiliy Kulikov <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agokernel/fork.c:copy_process(): consolidate the lockless CLONE_THREAD checks
Oleg Nesterov [Wed, 3 Jul 2013 22:08:32 +0000 (15:08 -0700)]
kernel/fork.c:copy_process(): consolidate the lockless CLONE_THREAD checks

copy_process() does a lot of "chaotic" initializations and checks
CLONE_THREAD twice before it takes tasklist.  In particular it sets
"p->group_leader = p" and then changes it again under tasklist if
!thread_group_leader(p).

This looks a bit confusing, lets create a single "if (CLONE_THREAD)" block
which initializes ->exit_signal, ->group_leader, and ->tgid.

Signed-off-by: Oleg Nesterov <[email protected]>
Cc: "Eric W. Biederman" <[email protected]>
Cc: Michal Hocko <[email protected]>
Cc: Pavel Emelyanov <[email protected]>
Cc: Sergey Dyasly <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agokernel/fork.c:copy_process(): don't add the uninitialized child to thread/task/pid...
Oleg Nesterov [Wed, 3 Jul 2013 22:08:31 +0000 (15:08 -0700)]
kernel/fork.c:copy_process(): don't add the uninitialized child to thread/task/pid lists

copy_process() adds the new child to thread_group/init_task.tasks list and
then does attach_pid(child, PIDTYPE_PID).  This means that the lockless
next_thread() or next_task() can see this thread with the wrong pid.  Say,
"ls /proc/pid/task" can list the same inode twice.

We could move attach_pid(child, PIDTYPE_PID) up, but in this case
find_task_by_vpid() can find the new thread before it was fully
initialized.

And this is already true for PIDTYPE_PGID/PIDTYPE_SID, With this patch
copy_process() initializes child->pids[*].pid first, then calls
attach_pid() to insert the task into the pid->tasks list.

attach_pid() no longer need the "struct pid*" argument, it is always
called after pid_link->pid was already set.

Signed-off-by: Oleg Nesterov <[email protected]>
Cc: "Eric W. Biederman" <[email protected]>
Cc: Michal Hocko <[email protected]>
Cc: Pavel Emelyanov <[email protected]>
Cc: Sergey Dyasly <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agokernel/fork.c:copy_process(): unify CLONE_THREAD-or-thread_group_leader code
Oleg Nesterov [Wed, 3 Jul 2013 22:08:30 +0000 (15:08 -0700)]
kernel/fork.c:copy_process(): unify CLONE_THREAD-or-thread_group_leader code

Cleanup and preparation for the next changes.

Move the "if (clone_flags & CLONE_THREAD)" code down under "if
(likely(p->pid))" and turn it into into the "else" branch.  This makes the
process/thread initialization more symmetrical and removes one check.

Signed-off-by: Oleg Nesterov <[email protected]>
Cc: "Eric W. Biederman" <[email protected]>
Cc: Michal Hocko <[email protected]>
Cc: Pavel Emelyanov <[email protected]>
Cc: Sergey Dyasly <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agofork: reorder permissions when violating number of processes limits
Eric Paris [Wed, 3 Jul 2013 22:08:29 +0000 (15:08 -0700)]
fork: reorder permissions when violating number of processes limits

When a task is attempting to violate the RLIMIT_NPROC limit we have a
check to see if the task is sufficiently priviledged.  The check first
looks at CAP_SYS_ADMIN, then CAP_SYS_RESOURCE, then if the task is uid=0.

A result is that tasks which are allowed by the uid=0 check are first
checked against the security subsystem.  This results in the security
subsystem auditting a denial for sys_admin and sys_resource and then the
task passing the uid=0 check.

This patch rearranges the code to first check uid=0, since if we pass that
we shouldn't hit the security system at all.  We then check sys_resource,
since it is the smallest capability which will solve the problem.  Lastly
we check the fallback everything cap_sysadmin.  We don't want to give this
capability many places since it is so powerful.

This will eliminate many of the false positive/needless denial messages we
get when a root task tries to violate the nproc limit.  (note that
kthreads count against root, so on a sufficiently large machine we can
actually get past the default limits before any userspace tasks are
launched.)

Signed-off-by: Eric Paris <[email protected]>
Cc: Al Viro <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agofs/proc/kcore.c: using strlcpy() instead of strncpy()
Zhao Hongjiang [Wed, 3 Jul 2013 22:08:28 +0000 (15:08 -0700)]
fs/proc/kcore.c: using strlcpy() instead of strncpy()

For NUL terminated string, set '\0' at the end.

Signed-off-by: Zhao Hongjiang <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agofs/proc/uptime.c:uptime_proc_show(): use get_monotonic_boottime()
Oleg Nesterov [Wed, 3 Jul 2013 22:08:27 +0000 (15:08 -0700)]
fs/proc/uptime.c:uptime_proc_show(): use get_monotonic_boottime()

Change uptime_proc_show() to use get_monotonic_boottime() instead of
do_posix_clock_monotonic_gettime() + monotonic_to_bootbased().

Signed-off-by: Oleg Nesterov <[email protected]>
Cc: "Eric W. Biederman" <[email protected]>
Acked-by: John Stultz <[email protected]>
Cc: Tomas Janousek <[email protected]>
Cc: Tomas Smetana <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agoexit.c: unexport __set_special_pids()
Oleg Nesterov [Wed, 3 Jul 2013 22:08:26 +0000 (15:08 -0700)]
exit.c: unexport __set_special_pids()

Move __set_special_pids() from exit.c to sys.c close to its single caller
and make it static.

And rename it to set_special_pids(), another helper with this name has
gone away.

Signed-off-by: Oleg Nesterov <[email protected]>
Cc: "Eric W. Biederman" <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agofs/exec.c:de_thread(): use change_pid() rather than detach_pid/attach_pid
Oleg Nesterov [Wed, 3 Jul 2013 22:08:25 +0000 (15:08 -0700)]
fs/exec.c:de_thread(): use change_pid() rather than detach_pid/attach_pid

de_thread() can use change_pid() instead of detach + attach.  This looks
better and this ensures that, say, next_thread() can never see a task with
->pid == NULL.

Signed-off-by: Oleg Nesterov <[email protected]>
Acked-by: "Eric W. Biederman" <[email protected]>
Cc: Michal Hocko <[email protected]>
Cc: Pavel Emelyanov <[email protected]>
Cc: Sergey Dyasly <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agocoredump: '% at the end' shouldn't bypass core_uses_pid logic
Oleg Nesterov [Wed, 3 Jul 2013 22:08:23 +0000 (15:08 -0700)]
coredump: '% at the end' shouldn't bypass core_uses_pid logic

"goto end" should not bypass the "Backward compatibility with
core_uses_pid" code, move this label up.

While at it,

- It is ugly to copy '|' into cn->corename and then inc
  the pointer for argv_split().

  Change format_corename() to increment pat_ptr instead.

- Remove the dead "if (*pat_ptr == 0)" in format_corename(),
  we already checked it is not zero.

Signed-off-by: Oleg Nesterov <[email protected]>
Cc: Andi Kleen <[email protected]>
Cc: Colin Walters <[email protected]>
Cc: Denys Vlasenko <[email protected]>
Cc: Jiri Slaby <[email protected]>
Cc: Lennart Poettering <[email protected]>
Cc: Lucas De Marchi <[email protected]>
Acked-by: Neil Horman <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agocoredump: kill call_count, add core_name_size
Oleg Nesterov [Wed, 3 Jul 2013 22:08:22 +0000 (15:08 -0700)]
coredump: kill call_count, add core_name_size

Imho, "atomic_t call_count" is ugly and should die.  It buys nothing and
in fact it can grow more than necessary, expand doesn't check if it was
already incremented by another task.

Kill it, and introduce "static int core_name_size" updated by
expand_corename().  This is obviously racy too but harmless, and
core_name_size never grows for no reason.

We do not bother to to calculate the "right" new size, we simply do
kmalloc(size_we_need) and use ksize() to rely on kmalloc_index's decision.

Finally change format_corename() to use expand_corename(), krealloc(NULL)
is fine.

Signed-off-by: Oleg Nesterov <[email protected]>
Cc: Andi Kleen <[email protected]>
Cc: Colin Walters <[email protected]>
Cc: Denys Vlasenko <[email protected]>
Cc: Jiri Slaby <[email protected]>
Cc: Lennart Poettering <[email protected]>
Cc: Lucas De Marchi <[email protected]>
Acked-by: Neil Horman <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agocoredump: kill cn_escape(), introduce cn_esc_printf()
Oleg Nesterov [Wed, 3 Jul 2013 22:08:20 +0000 (15:08 -0700)]
coredump: kill cn_escape(), introduce cn_esc_printf()

The usage of cn_escape() looks really annoying, imho this sequence needs a
wrapper.  And it is buggy.  If cn_printf() does expand_corename()
cn_escape() writes to the freed memory.

Introduce cn_esc_printf() which hopefully does this all right.  It records
the index before cn_vprintf(), not "char *" which is no longer valid (in
general) after krealloc().

Signed-off-by: Oleg Nesterov <[email protected]>
Cc: Andi Kleen <[email protected]>
Cc: Colin Walters <[email protected]>
Cc: Denys Vlasenko <[email protected]>
Cc: Jiri Slaby <[email protected]>
Cc: Lennart Poettering <[email protected]>
Cc: Lucas De Marchi <[email protected]>
Acked-by: Neil Horman <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agocoredump: cn_vprintf() has no reason to call vsnprintf() twice
Oleg Nesterov [Wed, 3 Jul 2013 22:08:19 +0000 (15:08 -0700)]
coredump: cn_vprintf() has no reason to call vsnprintf() twice

cn_vprintf() looks really overcomplicated and sub-optimal.  We do not need
vsnprintf(NULL) to calculate the size we need, we can simply try to print
into the current buffer and expand/retry only if necessary.

Signed-off-by: Oleg Nesterov <[email protected]>
Cc: Andi Kleen <[email protected]>
Cc: Colin Walters <[email protected]>
Cc: Denys Vlasenko <[email protected]>
Cc: Jiri Slaby <[email protected]>
Cc: Lennart Poettering <[email protected]>
Cc: Lucas De Marchi <[email protected]>
Acked-by: Neil Horman <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agocoredump: introduce cn_vprintf()
Oleg Nesterov [Wed, 3 Jul 2013 22:08:17 +0000 (15:08 -0700)]
coredump: introduce cn_vprintf()

Turn cn_printf(...) into cn_vprintf(va_list args), reintroduce
cn_printf() as a trivial wrapper.

This simplifies the next change and cn_vprintf() will have more
callers.

Signed-off-by: Oleg Nesterov <[email protected]>
Cc: Andi Kleen <[email protected]>
Cc: Colin Walters <[email protected]>
Cc: Denys Vlasenko <[email protected]>
Cc: Jiri Slaby <[email protected]>
Cc: Lennart Poettering <[email protected]>
Cc: Lucas De Marchi <[email protected]>
Acked-by: Neil Horman <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agocoredump: format_corename() can leak cn->corename
Oleg Nesterov [Wed, 3 Jul 2013 22:08:16 +0000 (15:08 -0700)]
coredump: format_corename() can leak cn->corename

do_coredump() assumes that format_corename() can only fail if
expand_corename() fails and frees cn->corename.  This is not true, for
example cn_print_exe_file() can fail and in this case nobody frees
cn->corename.

Change do_coredump() to always do kfree(cn->corename) after it calls
format_corename() (NULL is fine), change expand_corename() to do nothing
if kmalloc() fails.

Signed-off-by: Oleg Nesterov <[email protected]>
Cc: Andi Kleen <[email protected]>
Cc: Colin Walters <[email protected]>
Cc: Denys Vlasenko <[email protected]>
Cc: Jiri Slaby <[email protected]>
Cc: Lennart Poettering <[email protected]>
Cc: Lucas De Marchi <[email protected]>
Acked-by: Neil Horman <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agousermodehelper: kill the sub_info->path[0] check
Oleg Nesterov [Wed, 3 Jul 2013 22:08:15 +0000 (15:08 -0700)]
usermodehelper: kill the sub_info->path[0] check

call_usermodehelper_exec() does nothing but returns success if path[0] ==
0.  The only user which needs this strange feature is request_module(), it
can check modprobe_path[0] itself like other users do if they want to
detect the "disabled by admin" case.

Kill it.  Not only it looks strange, it can confuse other callers.  And
this allows us to revert 264b83c0 ("usermodehelper: check
subprocess_info->path != NULL"), do_execve(NULL) is safe.

Signed-off-by: Oleg Nesterov <[email protected]>
Acked-by: Rusty Russell <[email protected]>
Cc: Lucas De Marchi <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agosignals: eventpoll: do not use sigprocmask()
Oleg Nesterov [Wed, 3 Jul 2013 22:08:14 +0000 (15:08 -0700)]
signals: eventpoll: do not use sigprocmask()

sigprocmask() should die. None of the current callers actually
need this strange interface.

Change fs/eventpoll.c to use set_current_blocked(). This also
means we should not worry about SIGKILL/SIGSTOP.

Signed-off-by: Oleg Nesterov <[email protected]>
Cc: Al Viro <[email protected]>
Cc: Denys Vlasenko <[email protected]>
Cc: Eric Wong <[email protected]>
Cc: Jason Baron <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agoptrace: add ability to get/set signal-blocked mask
Andrey Vagin [Wed, 3 Jul 2013 22:08:12 +0000 (15:08 -0700)]
ptrace: add ability to get/set signal-blocked mask

crtools uses a parasite code for dumping processes.  The parasite code is
injected into a process with help PTRACE_SEIZE.

Currently crtools blocks signals from a parasite code.  If a process has
pending signals, crtools wait while a process handles these signals.

This method is not suitable for stopped tasks.  A stopped task can have a
few pending signals, when we will try to execute a parasite code, we will
need to drop SIGSTOP, but all other signals must remain pending, because a
state of processes must not be changed during checkpointing.

This patch adds two ptrace commands to set/get signal-blocked mask.

I think gdb can use this commands too.

[[email protected]: be consistent with brace layout]
Signed-off-by: Andrey Vagin <[email protected]>
Reviewed-by: Oleg Nesterov <[email protected]>
Cc: Roland McGrath <[email protected]>
Cc: Michael Kerrisk <[email protected]>
Cc: Pavel Emelyanov <[email protected]>
Cc: Cyrill Gorcunov <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agox86: kill TIF_DEBUG
Oleg Nesterov [Wed, 3 Jul 2013 22:08:11 +0000 (15:08 -0700)]
x86: kill TIF_DEBUG

Because it is not used.

Signed-off-by: Oleg Nesterov <[email protected]>
Cc: Benjamin Herrenschmidt <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Jan Kratochvil <[email protected]>
Cc: Michael Neuling <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Paul Mundt <[email protected]>
Cc: Will Deacon <[email protected]>
Cc: Prasad <[email protected]>
Cc: Russell King <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodocbook: add futexes to kernel-locking docbook
Randy Dunlap [Wed, 3 Jul 2013 22:08:10 +0000 (15:08 -0700)]
docbook: add futexes to kernel-locking docbook

Add Fast User Mutexes (futexes) to kernel-locking docbook.

Signed-off-by: Randy Dunlap <[email protected]>
Acked-by: Rob Landley <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agoDocumentation/CodingStyle: allow multiple return statements per function
Dan Carpenter [Wed, 3 Jul 2013 22:08:08 +0000 (15:08 -0700)]
Documentation/CodingStyle: allow multiple return statements per function

A surprising number of newbies interpret this section to mean that only
one return statement is allowed per function.  Part of the problem is that
the "one return statement per function" rule is an actual style guideline
that people are used to from other projects.

Signed-off-by: Dan Carpenter <[email protected]>
Cc: Eduardo Valentin <[email protected]>
Cc: Rob Landley <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agofs/fat: use fat_msg() to replace printk() in __fat_fs_error()
Gu Zheng [Wed, 3 Jul 2013 22:08:08 +0000 (15:08 -0700)]
fs/fat: use fat_msg() to replace printk() in __fat_fs_error()

Signed-off-by: Gu Zheng <[email protected]>
Acked-by: OGAWA Hirofumi <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years ago] nilfs2: use atomic64_t type for inodes_count and blocks_count fields in nilfs_root...
Vyacheslav Dubeyko [Wed, 3 Jul 2013 22:08:06 +0000 (15:08 -0700)]
] nilfs2: use atomic64_t type for inodes_count and blocks_count fields in nilfs_root struct

The cp_inodes_count and cp_blocks_count are represented as __le64 type in
on-disk structure (struct nilfs_checkpoint).  But analogous fields in
in-core structure (struct nilfs_root) are represented by atomic_t type.

This patch replaces atomic_t on atomic64_t type in representation of
inodes_count and blocks_count fields in struct nilfs_root.

Signed-off-by: Vyacheslav Dubeyko <[email protected]>
Acked-by: Ryusuke Konishi <[email protected]>
Acked-by: Joern Engel <[email protected]>
Cc: Clemens Eisserer <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agonilfs2: implement calculation of free inodes count
Vyacheslav Dubeyko [Wed, 3 Jul 2013 22:08:05 +0000 (15:08 -0700)]
nilfs2: implement calculation of free inodes count

Currently, NILFS2 returns 0 as free inodes count (f_ffree) and current
used inodes count as total file nodes in file system (f_files):

df -i
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
/dev/loop0           2      2       0  100% /mnt/nilfs2

This patch implements real calculation of free inodes count.  First of
all, it is calculated total file nodes in file system as
(desc_blocks_count * groups_per_desc_block * entries_per_group).  Then, it
is calculated free inodes count as difference the total file nodes and
used inodes count.  As a result, we have such output for NILFS2:

df -i
Filesystem       Inodes   IUsed    IFree IUse% Mounted on
/dev/loop0      4194304 2114701  2079603   51% /mnt/nilfs2

Reported-by: Clemens Eisserer <[email protected]>
Signed-off-by: Vyacheslav Dubeyko <[email protected]>
Signed-off-by: Ryusuke Konishi <[email protected]>
Tested-by: Vyacheslav Dubeyko <[email protected]>
Cc: Joern Engel <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-sirfsoc.c: add rtc drivers for CSR SiRFprimaII and SiRFatlasVI
Xianglong Du [Wed, 3 Jul 2013 22:08:04 +0000 (15:08 -0700)]
drivers/rtc/rtc-sirfsoc.c: add rtc drivers for CSR SiRFprimaII and SiRFatlasVI

On CSR SiRFprimaII/atlasVI, there is a programmable 16-bit divider
(RTC_DIV) that divides the input 32.768KHz clock to the frequency that
users need (E.g.  1 Hz).  The divided real-time clock will be used to
drive a 32-bit counter (RTC_COUNTER) that provides users with the actual
time.

In each cycle of the divided real-time clock, there is a Hertz interrupt
generated to the RISC.  Users can also configure an alarm (RTC_ALARM).
When RTC_COUNTER matches the alarm, there will be an alarm interrupt
generated to the RISC.

The system RTC can generate an alarm wake-up signal to notify the power
controller to wake up from power saving mode.

Signed-off-by: Xianglong Du <[email protected]>
Signed-off-by: Barry Song <[email protected]>
Cc: Jingoo Han <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-ds1216.c: use module_platform_driver_probe()
Fabio Porcedda [Wed, 3 Jul 2013 22:08:03 +0000 (15:08 -0700)]
drivers/rtc/rtc-ds1216.c: use module_platform_driver_probe()

Use module_platform_driver_probe() macro which makes the code smaller and
simpler.

Signed-off-by: Fabio Porcedda <[email protected]>
Cc: Alessandro Zummo <[email protected]>
Cc: Jingoo Han <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agortc: omap: restore back (hard-code) wakeup support
Hebbar Gururaja [Wed, 3 Jul 2013 22:08:02 +0000 (15:08 -0700)]
rtc: omap: restore back (hard-code) wakeup support

rtc-omap driver modules is used both by OMAP1/2, Davinci SoC platforms.

However, rtc wake support on OMAP1 is broken.  Hence the
device_init_wakeup() was removed from rtc-omap driver and moved to
platform board files that supported it (DA850/OMAP-L138).  [1]

However, recently [2] it was suggested that driver should always do a
device_init_wakeup(dev, true). Platforms that don't want/need
wakeup support can disable it from userspace via:

    echo disabled > /sys/devices/.../power/wakeup

Also, with the new DT boot-up, board file doesn't exist and hence there
is no way to have device wakeup support rtc.

The fix for above issues, is to hard code device_init_wakeup() inside
driver and let platforms that don't need this, handle it through the
sysfs power entry.

[1]
https://patchwork.kernel.org/patch/136731/

[2]
http://www.mail-archive.com/davinci-linux-open-source@linux.
davincidsp.com/msg26077.html

Signed-off-by: Hebbar Gururaja <[email protected]>
Cc: Alessandro Zummo <[email protected]>
Acked-by: Kevin Hilman <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agortc: add NXP PCF2127 support (i2c)
Renaud Cerrato [Wed, 3 Jul 2013 22:08:01 +0000 (15:08 -0700)]
rtc: add NXP PCF2127 support (i2c)

Added support for NXP PCF2127 RTC (i2c).

[[email protected]: fix typo, fix warnings]
Signed-off-by: Renaud Cerrato <[email protected]>
Cc: Jingoo Han <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-palmas.c: init wakeup before device register
Wei Ni [Wed, 3 Jul 2013 22:08:00 +0000 (15:08 -0700)]
drivers/rtc/rtc-palmas.c: init wakeup before device register

Enable dev as wakeup device before calling rtc_device_register(), so that
it can create the "wakealarm" sysfs.

Signed-off-by: Wei Ni <[email protected]>
Acked-by: Laxman Dewangan <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/class: convert from Legacy pm ops to dev_pm_ops
Shuah Khan [Wed, 3 Jul 2013 22:07:59 +0000 (15:07 -0700)]
drivers/rtc/class: convert from Legacy pm ops to dev_pm_ops

Convert drivers/rtc/class to use dev_pm_ops for power management and
remove Legacy PM ops hooks.  With this change, rtc class registers
suspend/resume callbacks via class->pm (dev_pm_ops) instead of Legacy
class->suspend/resume.  When __device_suspend() runs call-backs, it will
find class->pm ops for the rtc class.

Signed-off-by: Shuah Khan <[email protected]>
Signed-off-by: Jingoo Han <[email protected]>
Cc: Shuah Khan <[email protected]>
Cc: Alessandro Zummo <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-pcf2123.c: replace strict_strtoul() with kstrtoul()
Jingoo Han [Wed, 3 Jul 2013 22:07:58 +0000 (15:07 -0700)]
drivers/rtc/rtc-pcf2123.c: replace strict_strtoul() with kstrtoul()

The usage of strict_strtoul() is not preferred, because strict_strtoul()
is obsolete.  Thus, kstrtoul() should be used.

Signed-off-by: Jingoo Han <[email protected]>
Reviewed-by: Andy Shevchenko <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/interface.c: return -EBUSY, not -EACCES when device is busy
Chris Brand [Wed, 3 Jul 2013 22:07:57 +0000 (15:07 -0700)]
drivers/rtc/interface.c: return -EBUSY, not -EACCES when device is busy

If rtc->irq_task is non-NULL and task is NULL, they always
rtc_irq_set_freq(), whenever err is set to -EBUSY it will then immediately
be set to -EACCES, misleading the caller as to the underlying problem.

Signed-off-by: Chris Brand <[email protected]>
Acked-by: Alessandro Zummo <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-twl.c: cleanup with module_platform_driver() conversion
Peter Ujfalusi [Wed, 3 Jul 2013 22:07:56 +0000 (15:07 -0700)]
drivers/rtc/rtc-twl.c: cleanup with module_platform_driver() conversion

Use module_platform_driver() to register the platform driver.

Signed-off-by: Peter Ujfalusi <[email protected]>
Acked-by: Kevin Hilman <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-twl.c: fix rtc_reg_map initialization
Peter Ujfalusi [Wed, 3 Jul 2013 22:07:55 +0000 (15:07 -0700)]
drivers/rtc/rtc-twl.c: fix rtc_reg_map initialization

Initialize the rtc_reg_map in platform_driver's probe function instead at
module_init time.  This way we can make sure that the twl-core has been
already probed and initialized (twl_priv->twl_id is valid) since the
platform device for the RTC driver will be created by the twl-core after
it finished its init.

Reported-by: Christoph Fritz <[email protected]>
Signed-off-by: Peter Ujfalusi <[email protected]>
Tested-by: Kevin Hilman <[email protected]>
Tested-by: Grygorii Strashko <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-cmos.c: work around bios clearing rtc control
Derek Basehore [Wed, 3 Jul 2013 22:07:54 +0000 (15:07 -0700)]
drivers/rtc/rtc-cmos.c: work around bios clearing rtc control

The bios may clear the rtc control register when resuming the system. Since the
cmos interrupt handler may now be run before the rtc_cmos is resumed, this can
cause the interrupt handler to ignore an alarm since the alarm bit is not set in
the rtc control register. To work around this, check if the rtc_cmos is
suspended and use the stored value for the rtc control register.

Signed-off-by: Derek Basehore <[email protected]>
Reviewed-by: Sameer Nanda <[email protected]>
Cc: Alessandro Zummo <[email protected]>
Cc: Jingoo Han <[email protected]>
Cc: Steven Rostedt <[email protected]>
Cc: John Stultz <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-twl.c: ensure IRQ is wakeup enabled
Kevin Hilman [Wed, 3 Jul 2013 22:07:53 +0000 (15:07 -0700)]
drivers/rtc/rtc-twl.c: ensure IRQ is wakeup enabled

Currently, the RTC IRQ is never wakeup-enabled so is not capable of
bringing the system out of suspend.

On OMAP platforms, we have gotten by without this because the TWL RTC is
on an I2C-connected chip which is capable of waking up the OMAP via the IO
ring when the OMAP is in low-power states.

However, if the OMAP suspends without hitting the low-power states (and
the IO ring is not enabled), RTC wakeups will not work because the IRQ is
not wakeup enabled.

To fix, ensure the RTC IRQ is wakeup enabled whenever the RTC alarm is
set.

Signed-off-by: Kevin Hilman <[email protected]>
Cc: Alessandro Zummo <[email protected]>
Cc: Tony Lindgren <[email protected]>
Cc: Grygorii Strashko <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-pcf8583.c: use PTR_RET()
Sachin Kamat [Wed, 3 Jul 2013 22:07:52 +0000 (15:07 -0700)]
drivers/rtc/rtc-pcf8583.c: use PTR_RET()

Use of PTR_RET() simplifies the code.

Signed-off-by: Sachin Kamat <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-pcf8563.c: use PTR_RET()
Sachin Kamat [Wed, 3 Jul 2013 22:07:51 +0000 (15:07 -0700)]
drivers/rtc/rtc-pcf8563.c: use PTR_RET()

Use of PTR_RET() simplifies the code.

Signed-off-by: Sachin Kamat <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-m48t35.c: use PTR_RET()
Sachin Kamat [Wed, 3 Jul 2013 22:07:50 +0000 (15:07 -0700)]
drivers/rtc/rtc-m48t35.c: use PTR_RET()

Use of PTR_RET() simplifies the code.

Signed-off-by: Sachin Kamat <[email protected]>
Cc: Thomas Bogendoerfer <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-isl12022.c: use PTR_RET()
Sachin Kamat [Wed, 3 Jul 2013 22:07:49 +0000 (15:07 -0700)]
drivers/rtc/rtc-isl12022.c: use PTR_RET()

Use of PTR_RET() simplifies the code.

Signed-off-by: Sachin Kamat <[email protected]>
Cc: Roman Fietze <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-da9052.c: use PTR_RET()
Sachin Kamat [Wed, 3 Jul 2013 22:07:48 +0000 (15:07 -0700)]
drivers/rtc/rtc-da9052.c: use PTR_RET()

Use of PTR_RET() simplifies the code.

Signed-off-by: Sachin Kamat <[email protected]>
Cc: David Dajun Chen <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-mpc5121.c: use platform_{get,set}_drvdata()
Jingoo Han [Wed, 3 Jul 2013 22:07:47 +0000 (15:07 -0700)]
drivers/rtc/rtc-mpc5121.c: use platform_{get,set}_drvdata()

Use the wrapper functions for getting and setting the driver data using
platform_device instead of using dev_{get,set}_drvdata() with &pdev->dev,
so we can directly pass a struct platform_device.

Signed-off-by: Jingoo Han <[email protected]>
Cc: Grant Likely <[email protected]>
Cc: Rob Herring <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-ds1302.c: handle write protection
Sergey Yanovich [Wed, 3 Jul 2013 22:07:46 +0000 (15:07 -0700)]
drivers/rtc/rtc-ds1302.c: handle write protection

This chip has a control register and can prevent altering saved clock.
Without this patch we could have:

(arm)root@pac14:~# date
Tue May 21 03:08:27 MSK 2013
(arm)root@pac14:~# /etc/init.d/hwclock.sh show
Tue May 21 11:13:58 2013  -0.067322 seconds
(arm)root@pac14:~# /etc/init.d/hwclock.sh stop
[info] Saving the system clock.
[info] Hardware Clock updated to Tue May 21 03:09:01 MSK 2013.
(arm)root@pac14:~# /etc/init.d/hwclock.sh show
Tue May 21 11:14:15 2013  -0.624272 seconds

The patch enables write access to rtc before the driver tries to write
time and re-disables when time data is written.

Signed-off-by: Sergey Yanovich <[email protected]>
Acked-by: Marc Zyngier <[email protected]>
Cc: Alessandro Zummo <[email protected]>
Cc: Sachin Kamat <[email protected]>
Cc: Jingoo Han <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-ab8500.c: add second resolution to rtc driver
Alexandre Torgue [Wed, 3 Jul 2013 22:07:45 +0000 (15:07 -0700)]
drivers/rtc/rtc-ab8500.c: add second resolution to rtc driver

Android expects the RTC to have second resolution.  On ab8540 cut2 RTC
block has a new register which allows setting seconds for wakeup alarms.

Existing registers (minutes hi, mid and low) have seen their offsets
changed. Here is the new mapping:
  * AlarmSec     (A) 0x22
  * AlarmMinLow  (M) from 0x8 to 0x23
  * AlarmMinMid  (M) from 0x9 to 0x24
  * AlarmMinHigh (M) from 0xA to 0x25

Signed-off-by: Julien Delacou <[email protected]>
Signed-off-by: Alexandre Torgue <[email protected]>
Acked-by: Lee Jones <[email protected]>
Acked-by: Linus Walleij <[email protected]>
Cc: Samuel Ortiz <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-wm831x.c: remove empty function
Sachin Kamat [Wed, 3 Jul 2013 22:07:44 +0000 (15:07 -0700)]
drivers/rtc/rtc-wm831x.c: remove empty function

After the switch to devm_* functions and the removal of
rtc_device_unregister(), the 'remove' function does not do anything.
Delete it.

Signed-off-by: Sachin Kamat <[email protected]>
Acked-by: Mark Brown <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-tps80031.c: remove empty function
Sachin Kamat [Wed, 3 Jul 2013 22:07:43 +0000 (15:07 -0700)]
drivers/rtc/rtc-tps80031.c: remove empty function

After the switch to devm_* functions and the removal of
rtc_device_unregister(), the 'remove' function does not do anything.
Delete it.

Signed-off-by: Sachin Kamat <[email protected]>
Cc: Laxman Dewangan <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-sun4v.c: remove empty function
Sachin Kamat [Wed, 3 Jul 2013 22:07:42 +0000 (15:07 -0700)]
drivers/rtc/rtc-sun4v.c: remove empty function

After the switch to devm_* functions and the removal of
rtc_device_unregister(), the 'remove' function does not do anything.
Delete it.

Signed-off-by: Sachin Kamat <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-starfire.c: remove empty function
Sachin Kamat [Wed, 3 Jul 2013 22:07:41 +0000 (15:07 -0700)]
drivers/rtc/rtc-starfire.c: remove empty function

After the switch to devm_* functions and the removal of
rtc_device_unregister(), the 'remove' function does not do anything.
Delete it.

Signed-off-by: Sachin Kamat <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-snvs.c: remove empty function
Sachin Kamat [Wed, 3 Jul 2013 22:07:40 +0000 (15:07 -0700)]
drivers/rtc/rtc-snvs.c: remove empty function

After the switch to devm_* functions and the removal of
rtc_device_unregister(), the 'remove' function does not do anything.
Delete it.

Signed-off-by: Sachin Kamat <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-rx8581.c: remove empty function
Sachin Kamat [Wed, 3 Jul 2013 22:07:39 +0000 (15:07 -0700)]
drivers/rtc/rtc-rx8581.c: remove empty function

After the switch to devm_* functions and the removal of
rtc_device_unregister(), the 'remove' function does not do anything.
Delete it.

Signed-off-by: Sachin Kamat <[email protected]>
Cc: Martyn Welch <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-rs5c348.c: remove empty function
Sachin Kamat [Wed, 3 Jul 2013 22:07:38 +0000 (15:07 -0700)]
drivers/rtc/rtc-rs5c348.c: remove empty function

After the switch to devm_* functions and the removal of
rtc_device_unregister(), the 'remove' function does not do anything.
Delete it.

Signed-off-by: Sachin Kamat <[email protected]>
Acked-by: Atsushi Nemoto <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-rx4581.c: remove empty function
Sachin Kamat [Wed, 3 Jul 2013 22:07:37 +0000 (15:07 -0700)]
drivers/rtc/rtc-rx4581.c: remove empty function

After the switch to devm_* functions and the removal of
rtc_device_unregister(), the 'remove' function does not do anything.
Delete it.

Signed-off-by: Sachin Kamat <[email protected]>
Cc: Torben Hohn <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-rv3029c2.c: remove empty function
Sachin Kamat [Wed, 3 Jul 2013 22:07:36 +0000 (15:07 -0700)]
drivers/rtc/rtc-rv3029c2.c: remove empty function

After the switch to devm_* functions and the removal of
rtc_device_unregister(), the 'remove' function does not do anything.
Delete it.

Signed-off-by: Sachin Kamat <[email protected]>
Cc: Gregory Hermant <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-rs5c313.c: remove empty function
Sachin Kamat [Wed, 3 Jul 2013 22:07:36 +0000 (15:07 -0700)]
drivers/rtc/rtc-rs5c313.c: remove empty function

After the switch to devm_* functions and the removal of
rtc_device_unregister(), the 'remove' function does not do anything.
Delete it.

Signed-off-by: Sachin Kamat <[email protected]>
Cc: Nobuhiro Iwamatsu <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-ps3.c: remove empty function
Sachin Kamat [Wed, 3 Jul 2013 22:07:35 +0000 (15:07 -0700)]
drivers/rtc/rtc-ps3.c: remove empty function

After the switch to devm_* functions and the removal of
rtc_device_unregister(), the 'remove' function does not do anything.
Delete it.

Signed-off-by: Sachin Kamat <[email protected]>
Acked-by: Geoff Levand <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-pcf8583.c: remove empty function
Sachin Kamat [Wed, 3 Jul 2013 22:07:34 +0000 (15:07 -0700)]
drivers/rtc/rtc-pcf8583.c: remove empty function

After the switch to devm_* functions and the removal of
rtc_device_unregister(), the 'remove' function does not do anything.
Delete it.

Signed-off-by: Sachin Kamat <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-pcf8563.c: remove empty function
Sachin Kamat [Wed, 3 Jul 2013 22:07:33 +0000 (15:07 -0700)]
drivers/rtc/rtc-pcf8563.c: remove empty function

After the switch to devm_* functions and the removal of
rtc_device_unregister(), the 'remove' function does not do anything.
Delete it.

Signed-off-by: Sachin Kamat <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-pcf8523.c: remove empty function
Sachin Kamat [Wed, 3 Jul 2013 22:07:32 +0000 (15:07 -0700)]
drivers/rtc/rtc-pcf8523.c: remove empty function

After the switch to devm_* functions and the removal of
rtc_device_unregister(), the 'remove' function does not do anything.
Delete it.

Signed-off-by: Sachin Kamat <[email protected]>
Acked-by: Thierry Reding <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-max8997.c: remove empty function
Sachin Kamat [Wed, 3 Jul 2013 22:07:31 +0000 (15:07 -0700)]
drivers/rtc/rtc-max8997.c: remove empty function

After the switch to devm_* functions and the removal of
rtc_device_unregister(), the 'remove' function does not do anything.
Delete it.

Signed-off-by: Sachin Kamat <[email protected]>
Cc: <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-max77686.c: remove empty function
Sachin Kamat [Wed, 3 Jul 2013 22:07:30 +0000 (15:07 -0700)]
drivers/rtc/rtc-max77686.c: remove empty function

After the switch to devm_* functions and the removal of
rtc_device_unregister(), the 'remove' function does not do anything.
Delete it.

Signed-off-by: Sachin Kamat <[email protected]>
Cc: Chiwoong Byun <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-max8907.c: remove empty function
Sachin Kamat [Wed, 3 Jul 2013 22:07:29 +0000 (15:07 -0700)]
drivers/rtc/rtc-max8907.c: remove empty function

After the switch to devm_* functions and the removal of
rtc_device_unregister(), the 'remove' function does not do anything.
Delete it.

Signed-off-by: Sachin Kamat <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-max6900.c: remove empty function
Sachin Kamat [Wed, 3 Jul 2013 22:07:28 +0000 (15:07 -0700)]
drivers/rtc/rtc-max6900.c: remove empty function

After the switch to devm_* functions and the removal of
rtc_device_unregister(), the 'remove' function does not do anything.
Delete it.

Signed-off-by: Sachin Kamat <[email protected]>
Cc: Dale Farnsworth <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-max6902.c: remove empty function
Sachin Kamat [Wed, 3 Jul 2013 22:07:27 +0000 (15:07 -0700)]
drivers/rtc/rtc-max6902.c: remove empty function

After the switch to devm_* functions and the removal of
rtc_device_unregister(), the 'remove' function does not do anything.
Delete it.

Signed-off-by: Sachin Kamat <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-m41t94.c: remove empty function
Sachin Kamat [Wed, 3 Jul 2013 22:07:26 +0000 (15:07 -0700)]
drivers/rtc/rtc-m41t94.c: remove empty function

After the switch to devm_* functions and the removal of
rtc_device_unregister(), the 'remove' function does not do anything.
Delete it.

Signed-off-by: Sachin Kamat <[email protected]>
Cc: Kim B. Heino <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-generic.c: remove empty function
Sachin Kamat [Wed, 3 Jul 2013 22:07:25 +0000 (15:07 -0700)]
drivers/rtc/rtc-generic.c: remove empty function

After the switch to devm_* functions and the removal of
rtc_device_unregister(), the 'remove' function does not do anything.
Delete it.

Signed-off-by: Sachin Kamat <[email protected]>
Cc: Kyle McMartin <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-m48t35.c: remove empty function
Sachin Kamat [Wed, 3 Jul 2013 22:07:24 +0000 (15:07 -0700)]
drivers/rtc/rtc-m48t35.c: remove empty function

After the switch to devm_* functions and the removal of
rtc_device_unregister(), the 'remove' function does not do anything.
Delete it.

Signed-off-by: Sachin Kamat <[email protected]>
Cc: Thomas Bogendoerfer <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-m41t93.c: remove empty function
Sachin Kamat [Wed, 3 Jul 2013 22:07:23 +0000 (15:07 -0700)]
drivers/rtc/rtc-m41t93.c: remove empty function

After the switch to devm_* functions and the removal of
rtc_device_unregister(), the 'remove' function does not do anything.
Delete it.

Signed-off-by: Sachin Kamat <[email protected]>
Cc: Nikolaus Voss <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-isl12022.c: remove empty function
Sachin Kamat [Wed, 3 Jul 2013 22:07:22 +0000 (15:07 -0700)]
drivers/rtc/rtc-isl12022.c: remove empty function

After the switch to devm_* functions and the removal of
rtc_device_unregister(), the 'remove' function does not do anything.
Delete it.

Signed-off-by: Sachin Kamat <[email protected]>
Cc: Roman Fietze <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-fm3130.c: remove empty function
Sachin Kamat [Wed, 3 Jul 2013 22:07:21 +0000 (15:07 -0700)]
drivers/rtc/rtc-fm3130.c: remove empty function

After the switch to devm_* functions and the removal of
rtc_device_unregister(), the 'remove' function does not do anything.
Delete it.

Signed-off-by: Sachin Kamat <[email protected]>
Cc: Sergey Lapin <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-em3027.c: remove empty function
Sachin Kamat [Wed, 3 Jul 2013 22:07:20 +0000 (15:07 -0700)]
drivers/rtc/rtc-em3027.c: remove empty function

After the switch to devm_* functions and the removal of
rtc_device_unregister(), the 'remove' function does not do anything.
Delete it.

Signed-off-by: Sachin Kamat <[email protected]>
Cc: Mike Rapoport <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-efi.c: remove empty function
Sachin Kamat [Wed, 3 Jul 2013 22:07:19 +0000 (15:07 -0700)]
drivers/rtc/rtc-efi.c: remove empty function

After the switch to devm_* functions and the removal of
rtc_device_unregister(), the 'remove' function does not do anything.
Delete it.

Signed-off-by: Sachin Kamat <[email protected]>
Cc: dann frazier <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-ds1390.c: remove empty function
Sachin Kamat [Wed, 3 Jul 2013 22:07:18 +0000 (15:07 -0700)]
drivers/rtc/rtc-ds1390.c: remove empty function

After the switch to devm_* functions and the removal of
rtc_device_unregister(), the 'remove' function does not do anything.
Delete it.

Signed-off-by: Sachin Kamat <[email protected]>
Cc: Mark Jackson <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-ds3234.c: remove empty function
Sachin Kamat [Wed, 3 Jul 2013 22:07:17 +0000 (15:07 -0700)]
drivers/rtc/rtc-ds3234.c: remove empty function

After the switch to devm_* functions and the removal of
rtc_device_unregister(), the 'remove' function does not do anything.
Delete it.

Signed-off-by: Sachin Kamat <[email protected]>
Cc: Dennis Aberilla <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-ds1672.c: remove empty function
Sachin Kamat [Wed, 3 Jul 2013 22:07:17 +0000 (15:07 -0700)]
drivers/rtc/rtc-ds1672.c: remove empty function

After the switch to devm_* functions and the removal of
rtc_device_unregister(), the 'remove' function does not do anything.
Delete it.

Signed-off-by: Sachin Kamat <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-ds1286.c: remove empty function
Sachin Kamat [Wed, 3 Jul 2013 22:07:16 +0000 (15:07 -0700)]
drivers/rtc/rtc-ds1286.c: remove empty function

After the switch to devm_* functions and the removal of
rtc_device_unregister(), the 'remove' function does not do anything.
Delete it.

Signed-off-by: Sachin Kamat <[email protected]>
Cc: Thomas Bogendoerfer <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-ds1216.c: remove empty function
Sachin Kamat [Wed, 3 Jul 2013 22:07:15 +0000 (15:07 -0700)]
drivers/rtc/rtc-ds1216.c: remove empty function

After the switch to devm_* functions and the removal of
rtc_device_unregister(), the 'remove' function does not do anything.
Delete it.

Signed-off-by: Sachin Kamat <[email protected]>
Cc: Thomas Bogendoerfer <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-bq32k.c: remove empty function
Sachin Kamat [Wed, 3 Jul 2013 22:07:14 +0000 (15:07 -0700)]
drivers/rtc/rtc-bq32k.c: remove empty function

After the switch to devm_* functions and the removal of
rtc_device_unregister(), the 'remove' function does not do anything.
Delete it.

Signed-off-by: Sachin Kamat <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agortc: rtc-rc5t583: use platform_{get,set}_drvdata()
Jingoo Han [Wed, 3 Jul 2013 22:07:13 +0000 (15:07 -0700)]
rtc: rtc-rc5t583: use platform_{get,set}_drvdata()

Use the wrapper functions for getting and setting the driver data using
platform_device instead of using dev_{get,set}_drvdata() with &pdev->dev,
so we can directly pass a struct platform_device.

Signed-off-by: Jingoo Han <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agortc: rtc-coh901331: use platform_{get,set}_drvdata()
Jingoo Han [Wed, 3 Jul 2013 22:07:12 +0000 (15:07 -0700)]
rtc: rtc-coh901331: use platform_{get,set}_drvdata()

Use the wrapper functions for getting and setting the driver data using
platform_device instead of using dev_{get,set}_drvdata() with &pdev->dev,
so we can directly pass a struct platform_device.

Signed-off-by: Jingoo Han <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agortc: rtc-sh: use devm_*() functions
Jingoo Han [Wed, 3 Jul 2013 22:07:11 +0000 (15:07 -0700)]
rtc: rtc-sh: use devm_*() functions

Use devm_*() functions to make cleanup paths simpler.

Signed-off-by: Jingoo Han <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agortc: rtc-rx8025: use devm_*() functions
Jingoo Han [Wed, 3 Jul 2013 22:07:10 +0000 (15:07 -0700)]
rtc: rtc-rx8025: use devm_*() functions

Use devm_*() functions to make cleanup paths simpler.

Signed-off-by: Jingoo Han <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agortc: rtc-pxa: use devm_*() functions
Jingoo Han [Wed, 3 Jul 2013 22:07:09 +0000 (15:07 -0700)]
rtc: rtc-pxa: use devm_*() functions

Use devm_*() functions to make cleanup paths simpler.

Signed-off-by: Jingoo Han <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agortc: rtc-pm8xxx: use devm_*() functions
Jingoo Han [Wed, 3 Jul 2013 22:07:09 +0000 (15:07 -0700)]
rtc: rtc-pm8xxx: use devm_*() functions

Use devm_*() functions to make cleanup paths simpler.

Signed-off-by: Jingoo Han <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agortc: rtc-m48t59: use devm_*() functions
Jingoo Han [Wed, 3 Jul 2013 22:07:08 +0000 (15:07 -0700)]
rtc: rtc-m48t59: use devm_*() functions

Use devm_*() functions to make cleanup paths simpler.

Signed-off-by: Jingoo Han <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agortc: rtc-mpc5121: use devm_*() functions
Jingoo Han [Wed, 3 Jul 2013 22:07:07 +0000 (15:07 -0700)]
rtc: rtc-mpc5121: use devm_*() functions

Use devm_*() functions to make cleanup paths simpler.

Signed-off-by: Jingoo Han <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agortc: rtc-jz4740: use devm_*() functions
Jingoo Han [Wed, 3 Jul 2013 22:07:06 +0000 (15:07 -0700)]
rtc: rtc-jz4740: use devm_*() functions

Use devm_*() functions to make cleanup paths simpler.

Signed-off-by: Jingoo Han <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agortc: rtc-ds1307: use devm_*() functions
Jingoo Han [Wed, 3 Jul 2013 22:07:05 +0000 (15:07 -0700)]
rtc: rtc-ds1307: use devm_*() functions

Use devm_*() functions to make cleanup paths simpler.

Signed-off-by: Jingoo Han <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agodrivers/rtc/rtc-vr41xx.c: fix error return code in rtc_probe()
Wei Yongjun [Wed, 3 Jul 2013 22:07:04 +0000 (15:07 -0700)]
drivers/rtc/rtc-vr41xx.c: fix error return code in rtc_probe()

Fix to return -EBUSY in the platform irq get error handling case instead
of 0, as done elsewhere in this function.

Signed-off-by: Wei Yongjun <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agortc: add ability to push out an existing wakealarm using sysfs
Bernie Thompson [Wed, 3 Jul 2013 22:07:03 +0000 (15:07 -0700)]
rtc: add ability to push out an existing wakealarm using sysfs

This adds the ability for the rtc sysfs code to handle += characters at
the beginning of a wakealarm setting string.  This will allow the user
to attempt to push out an existing wakealarm by a provided amount.

In the case that the += characters are provided but the alarm is not
active -EINVAL is returned.

his is useful, at least for my purposes in suspend/resume testing.  The
basic test goes something like:

1. Set a wake alarm from userspace 5 seconds in the future

2. Start the suspend process (echo mem > /sys/power/state)

3. After ~2.5 seconds if userspace is still running (using another
   thread to check this), move the wake alarm 5 more seconds

If the "move" involves an unset of the wakealarm then there's a period
   of time where the system is midway through suspending but has no wake
   alarm.  It will get stuck.

We'd rather not remove the "move" since the idea is to avoid a cancelled
suspend when the alarm fires _during_ suspend.  It is difficult for the
test to tell the difference between a suspend that was cancelled because
the alarm fired too early and a suspend that was

Signed-off-by: Bernie Thompson <[email protected]>
Cc: Alessandro Zummo <[email protected]>
Cc: Doug Anderson <[email protected]>
Cc: "Rafael J. Wysocki" <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
12 years agortc: rtc-hid-sensor-time: allow 16 and 32 bit values for all attributes.
Alexander Holler [Wed, 3 Jul 2013 22:07:02 +0000 (15:07 -0700)]
rtc: rtc-hid-sensor-time: allow 16 and 32 bit values for all attributes.

There is no real reason to not support 16 or 32 bit values too.

Signed-off-by: Alexander Holler <[email protected]>
Cc: Alessandro Zummo <[email protected]>
Cc: Lars-Peter Clausen <[email protected]>
Cc: Jonathan Cameron <[email protected]>
Cc: Jiri Kosina <[email protected]>
Cc: John Stultz <[email protected]>
Cc: Jingoo Han <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>