Dmitry Torokhov [Fri, 2 Nov 2007 13:07:33 +0000 (09:07 -0400)]
Input: linux-input mailing list moved to vger.
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Acked-by: Jiri Kosina <jkosina@suse.cz>
Acked-by: Johannes Berg <johannes@sipsolutions.net>
Jens Axboe [Fri, 2 Nov 2007 07:49:08 +0000 (08:49 +0100)]
[BLOCK] Don't allow empty barriers to be passed down to queues that don't grok them
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Vasily Averin [Wed, 31 Oct 2007 07:33:24 +0000 (08:33 +0100)]
dm: bounce_pfn limit added
Device mapper uses its own bounce_pfn that may differ from one on underlying
device. In that way dm can build incorrect requests that contain sg elements
greater than underlying device is able to handle.
This is the cause of slab corruption in i2o layer, occurred on i386 arch when
very long direct IO requests are addressed to dm-over-i2o device.
Signed-off-by: Vasily Averin <vvs@sw.ru>
Cc: <stable@kernel.org>
Cc: Alasdair G Kergon <agk@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Aaron Carroll [Tue, 30 Oct 2007 09:40:13 +0000 (10:40 +0100)]
Deadline iosched: Fix batching fairness
After switching data directions, deadline always starts the next batch
from the lowest-sector request. This gives excessive deadline expiries
and large latency and throughput disparity between high- and low-sector
requests; an order of magnitude in some tests.
This patch changes the batching behaviour so new batches start from the
request whose expiry is earliest.
Signed-off-by: Aaron Carroll <aaronc@gelato.unsw.edu.au>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Aaron Carroll [Tue, 30 Oct 2007 09:40:13 +0000 (10:40 +0100)]
Deadline iosched: Reset batch for ordered requests
The deadline I/O scheduler does not reset the batch count when starting
a new batch at a higher-sectored request. This means the second and
subsequent batch in the same data direction will never exceed a single
request in size whenever higher-sectored requests are pending.
This patch gives new batches in the same data direction as old ones
their full quota of requests by resetting the batch count.
Signed-off-by: Aaron Carroll <aaronc@gelato.unsw.edu.au>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Aaron Carroll [Tue, 30 Oct 2007 09:40:12 +0000 (10:40 +0100)]
Deadline iosched: Factor out finding latter reques
Factor finding the next request in sector-sorted order into
a function deadline_latter_request.
Signed-off-by: Aaron Carroll <aaronc@gelato.unsw.edu.au>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Jens Axboe [Wed, 31 Oct 2007 11:06:37 +0000 (12:06 +0100)]
[SG] Get rid of __sg_mark_end()
sg_mark_end() overwrites the page_link information, but all users want
__sg_mark_end() behaviour where we just set the end bit. That is the most
natural way to use the sg list, since you'll fill it in and then mark the
end point.
So change sg_mark_end() to only set the termination bit. Add a sg_magic
debug check as well, and clear a chain pointer if it is set.
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Adrian Bunk [Tue, 30 Oct 2007 09:35:04 +0000 (10:35 +0100)]
cleanup asm/scatterlist.h includes
Not architecture specific code should not #include <asm/scatterlist.h>.
This patch therefore either replaces them with
#include <linux/scatterlist.h> or simply removes them if they were
unused.
Signed-off-by: Adrian Bunk <bunk@kernel.org>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Jens Axboe [Tue, 30 Oct 2007 09:34:33 +0000 (10:34 +0100)]
SG: Make sg_init_one() use general table init functions
Don't open code sg_init_one(), make it reuse sg_init_table().
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Paul Mundt [Fri, 2 Nov 2007 05:36:55 +0000 (14:36 +0900)]
sh64: Update defconfigs.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Paul Mundt [Fri, 2 Nov 2007 05:33:21 +0000 (14:33 +0900)]
sh: Update r7785rp defconfig.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Paul Mundt [Fri, 2 Nov 2007 05:28:07 +0000 (14:28 +0900)]
sh: mach-type updates.
This adds in the x3proto and magicpanelr2 mach types, plugs in
highlander and rts7751r2d groups, and also hooks up the r2d
subtypes.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Paul Mundt [Fri, 2 Nov 2007 05:17:19 +0000 (14:17 +0900)]
sh: Fix up r7780rp highlander CF access size.
R7780RP can't do byte-sized accesses to CF, so needs to do word
sized access with low-byte masking. This same problem exists
on older versions of the R2D, with the same workaround having
been implemented in
43f4b8c7578b928892b6f01d374346ae14e5eb70
there. Follow that change for the highlander boards.
This does not impact R7780MP or SH7785 based Highlander modules.
If you're unfortunate enough to be stuck with an R7780RP, this
patch is for you!
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Kaz Kojima [Fri, 2 Nov 2007 03:29:37 +0000 (12:29 +0900)]
sh: Terminate .eh_frame in VDSO with a 4-byte 0.
It's assumed that .eh_frame is terminated with 4-byte 0 in shared
libraries and executable. It seems to be the case for VDSOs too.
Without this terminator, I saw failures when unwinding from VDSO,
though I don't know how other architectures handle this issue.
For the normal libs, crtendS.o gives this terminator. We can use
such terminating objects. Or we can add a 4-byte 0 with modifying
the linker script like as the patch below.
Signed-off-by: Kaz Kojima <kkojima@rr.iij4u.or.jp>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Paul Mundt [Fri, 2 Nov 2007 03:22:47 +0000 (12:22 +0900)]
sh: Correct SUBARCH matching.
When configuring the kernel natively the uname matching is off,
so fix up the uname mangling to get the proper SUBARCH. Needs
an explicit range so that SH-5 doesn't break.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Paul Mundt [Fri, 2 Nov 2007 03:16:51 +0000 (12:16 +0900)]
sh: Decouple 4k and soft/hardirq stacks.
While using separate IRQ stacks can cut down on stack consumption,
many users can also use 4k stacks directly without the additional
need of separate stacks for soft and hardirqs.
With this split, we support the same rationale for 4KSTACKS as
m68knommu, with the IRQSTACKS abstraction as per ppc64.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Stuart Menefy [Fri, 2 Nov 2007 03:14:09 +0000 (12:14 +0900)]
sh: Fix optimized __copy_user() movca.l usage.
movca.l is restricted to SH-4 and up only, though compilers that
are unable to support ISA tuning (especially older versions of
binutils) will happily compile in the bogus opcode on older parts.
Conditionalize it to fix SH-3 regressions noted by Kristoffer.
Signed-off-by: Stuart Menefy <stuart.menefy@st.com>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Helge Deller [Fri, 2 Nov 2007 02:19:15 +0000 (22:19 -0400)]
Input: inport, logibm - use KERN_INFO when reporting missing mouse
Many mouse drivers are often compiled (e.g. in Linux distributions) into the
kernel at the same time just to make sure that at least one driver will suceed
in find it's mouse device. Nevertheless, only the inport and logitech busmouse
mouse drivers report with KERN_ERR log level if the mouse wasn't found. They
should use KERN_INFO instead, because it's not an error if the mouse isn't
attached at all.
Signed-off-by: Helge Deller <deller@gmx.de>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Dmitry Torokhov [Fri, 2 Nov 2007 02:13:32 +0000 (22:13 -0400)]
Input: appletouch - idle reset logic broke older Fountains
Fountains do not support change mode request and therefore
should be excluded from idle reset attempts.
Also:
- do not re-submit URB when we decide that touchpad needs to be
reinicialized
- do not repeat size detection when reinitializing the touchpad
- Add missing KERN_* prefixes to messages
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Acked-by: Johannes Berg <johannes@sipsolutions.net>
Linus Torvalds [Thu, 1 Nov 2007 22:08:07 +0000 (15:08 -0700)]
Merge branch 'for-linus' of git://git./linux/kernel/git/jikos/hid
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid:
HID: Don't access input_dev->private directly
HID: fix hidinput_connect ignoring retval from input_register_device
HID: hiddev - fix compiler warning
HID: Add GoTop tablets to blacklist
Linus Torvalds [Thu, 1 Nov 2007 22:07:29 +0000 (15:07 -0700)]
Merge branch 'upstream-linus' of /linux/kernel/git/jgarzik/netdev-2.6
* 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6:
Fix myri10ge NAPI oops & warnings
Fix region size check in mpc5200 FEC driver
mpc5200: Fix Kconfig dependancies on MPC5200 FEC device driver
Andrew Gallatin [Wed, 31 Oct 2007 21:40:06 +0000 (17:40 -0400)]
Fix myri10ge NAPI oops & warnings
When testing the myri10ge driver with 2.6.24-rc1, I found
that the machine crashed under heavy load:
Unable to handle kernel paging request at
0000000000100108 RIP:
[<
ffffffff803cc8dd>] net_rx_action+0x11b/0x184
The address corresponds to the list_move_tail() in
netif_rx_complete():
if (unlikely(work == weight))
list_move_tail(&n->poll_list, list);
Eventually, I traced the crashes to calling netif_rx_complete() with
work_done == budget. From looking at other drivers, it appears that
one should only call netif_rx_complete() when work_done < budget.
To fix it, I changed the test in myri10ge_poll() so that it refers
to to work_done rather than looking at the rx ring status. If
work_done is < budget, then that implies we have no more packets to
process. Any races will be resolved by the NIC when the write to
irq_claim is made.
In myri10ge_clean_rx_done(), if we ever exceeded our budget, it would
report a work_done one larger than was acutally done. This is because
the increment was done in the conditional, so work_done would be
incremented regardless of whether or not the test passed or failed.
This would lead to the WARN_ON_ONCE(work > weight); warning in
net_rx_action triggering. I've moved the increment of work_done
inside the loop. Note that this would only be a problem when we had
exceeded our budget.
Signed off by: Andrew Gallatin <gallatin@myri.com>
Andrew Gallatin Myricom Inc
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Grant Likely [Thu, 1 Nov 2007 14:22:35 +0000 (08:22 -0600)]
Fix region size check in mpc5200 FEC driver
Driver shouldn't complain if the register range is larger than what
it expects. This works around failures with some device trees.
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Grant Likely [Thu, 1 Nov 2007 14:22:30 +0000 (08:22 -0600)]
mpc5200: Fix Kconfig dependancies on MPC5200 FEC device driver
When not building an arch/powerpc kernel, the mpc5200 FEC driver depends
on some symbols which are not defined (BESTCOMM & BESTCOMM_FEC).
This patch flips around the dependancy logic so that it cannot be
selected unless BESTCOMM_FEC is selected first. Kconfig stops
complaining this way.
Also, the driver only works for arch/powerpc (not arch/ppc) anyway so
it should depend on PPC_MERGE also.
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Linus Torvalds [Thu, 1 Nov 2007 19:09:33 +0000 (12:09 -0700)]
Merge branch 'master' of /linux/kernel/git/davem/net-2.6
* 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6:
[IRDA] IRNET: Fix build when TCGETS2 is defined.
[NET]: docbook fixes for netif_ functions
[NET]: Hide the net_ns kmem cache
[NET]: Mark the setup_net as __net_init
[NET]: Hide the dead code in the net_namespace.c
[NET]: Relax the reference counting of init_net_ns
[NETNS]: Make the init/exit hooks checks outside the loop
[NET]: Forget the zero_it argument of sk_alloc()
[NET]: Remove bogus zero_it argument from sk_alloc
[NET]: Make the sk_clone() lighter
[NET]: Move some core sock setup into sk_prot_alloc
[NET]: Auto-zero the allocated sock object
[NET]: Cleanup the allocation/freeing of the sock object
[NET]: Move the get_net() from sock_copy()
[NET]: Move the sock_copy() from the header
[TCP]: Another TAGBITS -> SACKED_ACKED|LOST conversion
[TCP]: Process DSACKs that reside within a SACK block
David S. Miller [Thu, 1 Nov 2007 10:18:02 +0000 (03:18 -0700)]
[SPARC64]: Update defconfig.
Signed-off-by: David S. Miller <davem@davemloft.net>
David S. Miller [Thu, 1 Nov 2007 09:26:38 +0000 (02:26 -0700)]
[IRDA] IRNET: Fix build when TCGETS2 is defined.
Signed-off-by: David S. Miller <davem@davemloft.net>
Stephen Hemminger [Thu, 1 Nov 2007 09:21:47 +0000 (02:21 -0700)]
[NET]: docbook fixes for netif_ functions
Documentation updates for network interfaces.
1. Add doc for netif_napi_add
2. Remove doc for unused returns from netif_rx
3. Add doc for netif_receive_skb
[ Incorporated minor mods from Randy Dunlap -DaveM ]
Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Pavel Emelyanov [Thu, 1 Nov 2007 07:46:50 +0000 (00:46 -0700)]
[NET]: Hide the net_ns kmem cache
This cache is only required to create new namespaces,
but we won't have them in CONFIG_NET_NS=n case.
Hide it under the appropriate ifdef.
Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Pavel Emelyanov [Thu, 1 Nov 2007 07:45:59 +0000 (00:45 -0700)]
[NET]: Mark the setup_net as __net_init
The setup_net is called for the init net namespace
only (int the CONFIG_NET_NS=n of course) from the __init
function, so mark it as __net_init to disappear with the
caller after the boot.
Yet again, in the perfect world this has to be under
#ifdef CONFIG_NET_NS, but it isn't guaranteed that every
subsystem is registered *after* the init_net_ns is set
up. After we are sure, that we don't start registering
them before the init net setup, we'll be able to move
this code under the ifdef.
Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Pavel Emelyanov [Thu, 1 Nov 2007 07:44:50 +0000 (00:44 -0700)]
[NET]: Hide the dead code in the net_namespace.c
The namespace creation/destruction code is never called
if the CONFIG_NET_NS is n, so it's OK to move it under
appropriate ifdef.
The copy_net_ns() in the "n" case checks for flags and
returns -EINVAL when new net ns is requested. In a perfect
world this stub must be in net_namespace.h, but this
function need to know the CLONE_NEWNET value and thus
requires sched.h. On the other hand this header is to be
injected into almost every .c file in the networking code,
and making all this code depend on the sched.h is a
suicidal attempt.
Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Pavel Emelyanov [Thu, 1 Nov 2007 07:43:49 +0000 (00:43 -0700)]
[NET]: Relax the reference counting of init_net_ns
When the CONFIG_NET_NS is n there's no need in refcounting
the initial net namespace. So relax this code by making a
stupid stubs for the "n" case.
Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Pavel Emelyanov [Thu, 1 Nov 2007 07:42:43 +0000 (00:42 -0700)]
[NETNS]: Make the init/exit hooks checks outside the loop
When the new pernet something (subsys, device or operations) is
being registered, the init callback is to be called for each
namespace, that currently exitst in the system. During the
unregister, the same is to be done with the exit callback.
However, not every pernet something has both calls, but the
check for the appropriate pointer to be not NULL is performed
inside the for_each_net() loop.
This is (at least) strange, so tune this.
Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Pavel Emelyanov [Thu, 1 Nov 2007 07:39:31 +0000 (00:39 -0700)]
[NET]: Forget the zero_it argument of sk_alloc()
Finally, the zero_it argument can be completely removed from
the callers and from the function prototype.
Besides, fix the checkpatch.pl warnings about using the
assignments inside if-s.
This patch is rather big, and it is a part of the previous one.
I splitted it wishing to make the patches more readable. Hope
this particular split helped.
Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Pavel Emelyanov [Thu, 1 Nov 2007 07:38:43 +0000 (00:38 -0700)]
[NET]: Remove bogus zero_it argument from sk_alloc
At this point nobody calls the sk_alloc(() with zero_it == 0,
so remove unneeded checks from it.
Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Pavel Emelyanov [Thu, 1 Nov 2007 07:37:32 +0000 (00:37 -0700)]
[NET]: Make the sk_clone() lighter
The sk_prot_alloc() already performs all the stuff needed by the
sk_clone(). Besides, the sk_prot_alloc() requires almost twice
less arguments than the sk_alloc() does, so call the sk_prot_alloc()
saving the stack a bit.
Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Pavel Emelyanov [Thu, 1 Nov 2007 07:36:26 +0000 (00:36 -0700)]
[NET]: Move some core sock setup into sk_prot_alloc
The security_sk_alloc() and the module_get is a part of the
object allocations - move it in the proper place.
Note, that since we do not reset the newly allocated sock
in the sk_alloc() (memset() is removed with the previous
patch) we can safely do this.
Also fix the error path in sk_prot_alloc() - release the security
context if needed.
Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Pavel Emelyanov [Thu, 1 Nov 2007 07:34:42 +0000 (00:34 -0700)]
[NET]: Auto-zero the allocated sock object
We have a __GFP_ZERO flag that allocates a zeroed chunk of memory.
Use it in the sk_alloc() and avoid a hand-made memset().
This is a temporary patch that will help us in the nearest future :)
Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Pavel Emelyanov [Thu, 1 Nov 2007 07:33:50 +0000 (00:33 -0700)]
[NET]: Cleanup the allocation/freeing of the sock object
The sock object is allocated either from the generic cache with
the kmalloc, or from the proc->slab cache.
Move this logic into an isolated set of helpers and make the
sk_alloc/sk_free look a bit nicer.
Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Pavel Emelyanov [Thu, 1 Nov 2007 07:31:26 +0000 (00:31 -0700)]
[NET]: Move the get_net() from sock_copy()
The sock_copy() is supposed to just clone the socket. In a perfect
world it has to be just memcpy, but we have to handle the security
mark correctly. All the extra setup must be performed in sk_clone()
call, so move the get_net() into more proper place.
Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Pavel Emelyanov [Thu, 1 Nov 2007 07:29:45 +0000 (00:29 -0700)]
[NET]: Move the sock_copy() from the header
The sock_copy() call is not used outside the sock.c file,
so just move it into a sock.c
Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Ilpo Järvinen [Thu, 1 Nov 2007 07:10:18 +0000 (00:10 -0700)]
[TCP]: Another TAGBITS -> SACKED_ACKED|LOST conversion
Similar to commit
3eec0047d9bdd, point of this is to avoid
skipping R-bit skbs.
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
Ilpo Järvinen [Thu, 1 Nov 2007 07:09:37 +0000 (00:09 -0700)]
[TCP]: Process DSACKs that reside within a SACK block
DSACK inside another SACK block were missed if start_seq of DSACK
was larger than SACK block's because sorting prioritizes full
processing of the SACK block before DSACK. After SACK block
sorting situation is like this:
SSSSSSSSS
D
SSSSSS
SSSSSSS
Because write_queue is walked in-order, when the first SACK block
has been processed, TCP is already past the skb for which the
DSACK arrived and we haven't taught it to backtrack (nor should
we), so TCP just continues processing by going to the next SACK
block after the DSACK (if any).
Whenever such DSACK is present, do an embedded checking during
the previous SACK block.
If the DSACK is below snd_una, there won't be overlapping SACK
block, and thus no problem in that case. Also if start_seq of
the DSACK is equal to the actual block, it will be processed
first.
Tested this by using netem to duplicate 15% of packets, and
by printing SACK block when found_dup_sack is true and the
selected skb in the dup_sack = 1 branch (if taken):
SACK block 0: 4344-5792 (relative to snd_una
2019137317)
SACK block 1: 4344-5792 (relative to snd_una
2019137317)
equal start seqnos => next_dup = 0, dup_sack = 1 won't occur...
SACK block 0: 5792-7240 (relative to snd_una
2019214061)
SACK block 1: 2896-7240 (relative to snd_una
2019214061)
DSACK skb match 5792-7240 (relative to snd_una)
...and next_dup = 1 case (after the not shown start_seq sort),
went to dup_sack = 1 branch.
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
David S. Miller [Wed, 31 Oct 2007 04:11:28 +0000 (21:11 -0700)]
[SPARC64]: Fix linkage of enormous kernels.
This was found by make randconfig
If the kernel .text is very large, the .fixup section branches
are too far away to be relocated correctly.
Use "sethi %hi(label), reg; jmpl reg + %lo(label); %g0" sequence
instead of the branch to fix this.
There is another case in switch_to() involving a branch, which
is fixed similarly.
Signed-off-by: David S. Miller <davem@davemloft.net>
David S. Miller [Mon, 29 Oct 2007 08:19:14 +0000 (01:19 -0700)]
[SPARC64]: Fix build with CONFIG_NET disabled.
We can't export verify_compat_iovec when CONFIG_NET is
disabled, and consequently the Solaris compat module
should also depend upon CONFIG_NET.
Signed-off-by: David S. Miller <davem@davemloft.net>
David S. Miller [Mon, 29 Oct 2007 07:36:09 +0000 (00:36 -0700)]
[SPARC64]: Fix build failure when CONFIG_BUG is disabled.
When CONFIG_BUG is turned off, the standard trick of:
switch (x) {
case X:
...
case Y:
...
default:
BUG();
};
to mark impossible cases does not work because BUG() evalutes
to nothing and thus GCC just sees a fallthrough code path.
Add an explicit KERN_ERR log message and a do_exit() to trap
this case.
Signed-off-by: David S. Miller <davem@davemloft.net>
David S. Miller [Mon, 29 Oct 2007 07:23:07 +0000 (00:23 -0700)]
[SPARC64]: Kill unused ITAG_MASK macro in ultra.S
It is unused since we went to an I-cache flush that solely used
the 'flush' instruction, and it's presence breaks the build
when PAGE_SIZE is 512KB.
Signed-off-by: David S. Miller <davem@davemloft.net>
David S. Miller [Sun, 28 Oct 2007 05:33:33 +0000 (22:33 -0700)]
[SPARC64]: Fix bogus '&' conditinal in set_rtc_mmss().
We're using '&' instead of '&&'.
Noticed by Roel Kluin.
Signed-off-by: David S. Miller <davem@davemloft.net>
Linus Torvalds [Wed, 31 Oct 2007 20:43:31 +0000 (13:43 -0700)]
Merge git://git./linux/kernel/git/gregkh/driver-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-2.6:
Revert "Driver core: remove class_device_*_bin_file"
Linus Torvalds [Wed, 31 Oct 2007 20:40:29 +0000 (13:40 -0700)]
Merge master.kernel.org:/home/rmk/linux-2.6-arm
* master.kernel.org:/home/rmk/linux-2.6-arm:
[ARM] 4634/1: DaVinci GPIO header build fix
[ARM] 4636/1: pxa: add default configuration for zylonite
[ARM] 4635/1: pxa: Change Eric Miao's email address to eric.miao@marvell.com
[ARM] Fix assignment instead of condition in arm/mach-omap2/clock.c
[ARM] nommu: fix breakage caused by
f9720205d1f847cb59e197e851b5276425363f6b
[ARM] pxa: shut up CLOCK_EVT_MODE_RESUME warning
[ARM] Fix FIQ issue with ARM926
[ARM] Fix pxamci regression
[ARM] Fix netx_defconfig regression
[ARM] Fix ateb9200_defconfig build regression
[ARM] Fix an rpc_defconfig regression
[ARM] Fix omap_h2_1610_defconfig regressions
[ARM] 4632/1: Fix a typo in include/asm-arm/plat-s3c/regs-nand.h
Greg Kroah-Hartman [Wed, 31 Oct 2007 19:51:29 +0000 (12:51 -0700)]
Revert "Driver core: remove class_device_*_bin_file"
This reverts commit
fcd239d3d5575e5cc63aab5c33cf6dc66904f6d6.
I messed up, ia64 still uses these files in the current tree, and now
can not build the pci code, which all ia64 boxes seem to require :)
This fixes that mistake.
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Adrian Bunk [Sun, 28 Oct 2007 15:51:32 +0000 (16:51 +0100)]
ieee1394: ieee1394_transactions.c: remove dead code
This patch removes dead code spotted by the Intel C Compiler.
Signed-off-by: Adrian Bunk <bunk@kernel.org>
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Kristian Høgsberg [Tue, 5 Jun 2007 23:27:05 +0000 (19:27 -0400)]
firewire: Fix pci resume to not pass in a __be32 config rom.
The ohci_enable() function shared between pci_probe and pci_resume
takes a host endian config rom, but ohci->config_rom is __be32. This
sets up the config rom in the wrong endian on little endian machine,
specifically, BusOptions will be initialized to a 0 max receive size.
This patch changes the way we reuse the config rom so that we avoid
this problem.
Signed-off-by: Kristian Hoegsberg <krh@redhat.com>
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Linus Torvalds [Wed, 31 Oct 2007 16:19:46 +0000 (09:19 -0700)]
Remove broken ptrace() special-case code from file mapping
The kernel has for random historical reasons allowed ptrace() accesses
to access (and insert) pages into the page cache above the size of the
file.
However, Nick broke that by mistake when doing the new fault handling in
commit
54cb8821de07f2ffcd28c380ce9b93d5784b40d7 ("mm: merge populate and
nopage into fault (fixes nonlinear)". The breakage caused a hang with
gdb when trying to access the invalid page.
The ptrace "feature" really isn't worth resurrecting, since it really is
wrong both from a portability _and_ from an internal page cache validity
standpoint. So this removes those old broken remnants, and fixes the
ptrace() hang in the process.
Noticed and bisected by Duane Griffin, who also supplied a test-case
(quoth Nick: "Well that's probably the best bug report I've ever had,
thanks Duane!").
Cc: Duane Griffin <duaneg@dghda.com>
Acked-by: Nick Piggin <npiggin@suse.de>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
David Brownell [Mon, 29 Oct 2007 23:15:46 +0000 (00:15 +0100)]
[ARM] 4634/1: DaVinci GPIO header build fix
This fixes a build problem with GPIOs on DaVinci. Since it inlines
operations for on-chip GPIOs, it needs some headers to support those
direct register accesses. Those headers won't be included on other
platforms, since they don't have that optimization.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Kevin Hilman <khilman@mvista.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
eric miao [Tue, 30 Oct 2007 07:02:55 +0000 (08:02 +0100)]
[ARM] 4636/1: pxa: add default configuration for zylonite
Signed-off-by: eric miao <eric.miao@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
eric miao [Tue, 30 Oct 2007 07:01:38 +0000 (08:01 +0100)]
[ARM] 4635/1: pxa: Change Eric Miao's email address to eric.miao@marvell.com
Signed-off-by: eric miao <eric.miao@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Roel Kluin [Fri, 26 Oct 2007 21:22:51 +0000 (23:22 +0200)]
[ARM] Fix assignment instead of condition in arm/mach-omap2/clock.c
Fix assignment instead of condition
Signed-off-by: Roel Kluin <12o3l@tiscali.nl>
Acked-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Russell King [Sat, 27 Oct 2007 20:48:43 +0000 (21:48 +0100)]
[ARM] nommu: fix breakage caused by
f9720205d1f847cb59e197e851b5276425363f6b
Someone forgot to use 'ls include/asm-*/flat.h' or
'grep -r flat_get_addr_from_rp .' to find all architectures which
may be affected by their change. Fix the fall out.
Noticed-by: Robert P. J. Day <rpjday@crashcourse.ca>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Russell King [Sat, 27 Oct 2007 14:15:49 +0000 (15:15 +0100)]
[ARM] pxa: shut up CLOCK_EVT_MODE_RESUME warning
Resolve:
CC arch/arm/mach-pxa/time.o
arch/arm/mach-pxa/time.c: In function `pxa_osmr0_set_mode':
arch/arm/mach-pxa/time.c:154: warning: enumeration value `CLOCK_EVT_MODE_RESUME' not handled in switch
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Russell King [Sat, 27 Oct 2007 10:01:35 +0000 (11:01 +0100)]
[ARM] Fix FIQ issue with ARM926
Jon Eibertzon writes:
> We have noticed that the I-cache is disabled while waiting for
> interrupt in cpu_arm926_do_idle in arch/arm/mm/proc-arm926.S
> and we are curious to know why, because this causes us a great
> performance hit when executing in FIQ-handlers. Is it assumed
> here that every individual FIQ-handler re-enables the I-cache?
The I-cache disable is an errata workaround, so the solution is to
disable FIQs across the section with the I-cache disabled.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Russell King [Fri, 26 Oct 2007 16:56:40 +0000 (17:56 +0100)]
[ARM] Fix pxamci regression
Fix:
WARNING: at arch/arm/mach-pxa/clock.c:69 clk_disable()
[<
c002d7c8>] (dump_stack+0x0/0x14) from [<
c00334f4>] (clk_disable+0x34/0xa0)
[<
c00334c0>] (clk_disable+0x0/0xa0) from [<
c028a43c>] (pxamci_set_ios+0x74/0xf0)
[<
c028a3c8>] (pxamci_set_ios+0x0/0xf0) from [<
c0281548>] (mmc_power_off+0x90/0x9c)
[<
c02814b8>] (mmc_power_off+0x0/0x9c) from [<
c0281a30>] (mmc_start_host+0x18/0x28)
[<
c0281a18>] (mmc_start_host+0x0/0x28) from [<
c02825a0>] (mmc_add_host+0xe8/0x104)
[<
c02824b8>] (mmc_add_host+0x0/0x104) from [<
c028a7d0>] (pxamci_probe+0x24c/0x2f4)
[<
c028a584>] (pxamci_probe+0x0/0x2f4) from [<
c01e5948>] (platform_drv_probe+0x20/0x24)
...
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Russell King [Fri, 26 Oct 2007 16:55:28 +0000 (17:55 +0100)]
[ARM] Fix netx_defconfig regression
Fix:
CC arch/arm/mach-netx/xc.o
arch/arm/mach-netx/xc.c: In function 'request_xc':
arch/arm/mach-netx/xc.c:192: error: 'struct kobject' has no member named 'name'
arch/arm/mach-netx/xc.c:196: error: 'struct kobject' has no member named 'name'
arch/arm/mach-netx/xc.c:200: error: 'struct kobject' has no member named 'name'
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Russell King [Fri, 26 Oct 2007 16:54:39 +0000 (17:54 +0100)]
[ARM] Fix ateb9200_defconfig build regression
Fix:
CC drivers/serial/atmel_serial.o
drivers/serial/atmel_serial.c: In function 'atmel_serial_suspend':
drivers/serial/atmel_serial.c:924: error: implicit declaration of function 'at91_suspend_entering_slow_clock'
Acked-by: Andrew Victor <andrew@sanpeople.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Russell King [Fri, 26 Oct 2007 16:47:34 +0000 (17:47 +0100)]
[ARM] Fix an rpc_defconfig regression
Fix:
CC drivers/scsi/arm/powertec.o
In file included from drivers/scsi/arm/powertec.c:29:
drivers/scsi/arm/scsi.h: In function 'next_SCp':
drivers/scsi/arm/scsi.h:42: error: 'struct scatterlist' has no member named 'page'
drivers/scsi/arm/scsi.h: In function 'init_SCp':
drivers/scsi/arm/scsi.h:80: error: 'struct scatterlist' has no member named 'page'
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Russell King [Fri, 26 Oct 2007 15:33:31 +0000 (16:33 +0100)]
[ARM] Fix omap_h2_1610_defconfig regressions
Fix:
arch/arm/mach-omap1/built-in.o: In function `h2_init':
board-h2.c:(.init.text+0xbb4): undefined reference to `i2c_register_board_info'
Acked-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Matt Reimer [Thu, 25 Oct 2007 18:06:44 +0000 (19:06 +0100)]
[ARM] 4632/1: Fix a typo in include/asm-arm/plat-s3c/regs-nand.h
Fix a typo in include/asm-arm/plat-s3c/regs-nand.h.
Signed-off-by: Matt Reimer <mreimer@vpop.net>
Acked-by: Ben Dooks <ben-linux@fluff.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
David Miller [Wed, 31 Oct 2007 04:23:48 +0000 (21:23 -0700)]
[MEDIA] IVTV: exit_ivtv_i2c() cannot be __devexit
It is referenced both from __devinit code (ivtv_probe) and
normal .text (ivtv_process_eeprom), and therefore cannot
be discarded via __devexit.
Signed-off-by: David S. Miller <davem@davemloft.net>
Acked-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Linus Torvalds [Wed, 31 Oct 2007 14:46:51 +0000 (07:46 -0700)]
Merge branch 'master' of git://git./linux/kernel/git/davem/net-2.6
* 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6:
[AF_KEY]: suppress a warning for 64k pages.
[TIPC]: Fix headercheck wrt. tipc_config.h
[COMPAT]: Fix build on COMPAT platforms when CONFIG_NET is disabled.
[CONNECTOR]: Fix a spurious kfree_skb() call
[COMPAT]: Fix new dev_ifname32 returning -EFAULT
[NET]: Fix incorrect sg_mark_end() calls.
[IPVS]: Remove /proc/net/ip_vs_lblcr
[IPV6]: remove duplicate call to proc_net_remove
[NETNS]: fix net released by rcu callback
[NET]: Fix free_netdev on register_netdev failure.
[WAN]: fix drivers/net/wan/lmc/ compilation
Dmitry Torokhov [Wed, 31 Oct 2007 11:33:26 +0000 (12:33 +0100)]
HID: Don't access input_dev->private directly
input_{get|set}_drvdata() helpers should be used instead.
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Dirk Hohndel [Tue, 30 Oct 2007 12:02:44 +0000 (13:02 +0100)]
HID: fix hidinput_connect ignoring retval from input_register_device
hidinput_connect() ignores retval from input_register_device(). Fix it
by properly undoing all the registrations that have been already done,
and return error.
Signed-off-by: Dirk Hohndel <hohndel@linux.intel.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Jiri Kosina [Thu, 25 Oct 2007 09:38:21 +0000 (11:38 +0200)]
HID: hiddev - fix compiler warning
drivers/hid/usbhid/hiddev.c: In function 'hiddev_compat_ioctl':
drivers/hid/usbhid/hiddev.c:746: warning: passing argument 4 of 'hiddev_ioctl' makes
integer from pointer without a cast
Add cast to hiddev_compat_ioctl()
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Jerrold Jones [Mon, 22 Oct 2007 09:38:41 +0000 (11:38 +0200)]
HID: Add GoTop tablets to blacklist
GoTop devices are handled by usbtouchscreen driver, make sure HID
ignores them.
Signed-off-by: Daniel Ritz <daniel.ritz@gmx.ch>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Stephen Rothwell [Wed, 31 Oct 2007 06:57:05 +0000 (23:57 -0700)]
[AF_KEY]: suppress a warning for 64k pages.
On PowerPC allmodconfig build we get this:
net/key/af_key.c:400: warning: comparison is always false due to limited range of data type
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
Paul Mundt [Wed, 31 Oct 2007 06:22:45 +0000 (15:22 +0900)]
sh: Clean up SR.RB Kconfig mess.
CPU_HAS_SR_RB is selected by both CPU_SH3 and CPU_SH4, so having a
dependency and default y on those additionally doesn't make much sense.
The select also has to be special cased for CPUs that don't support
this.
This is also something that has been abused too much as a result
of being user-visible, hence the addition of the select in the first
place. So just kill the user-visibility entirely while we're at it.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Paul Mundt [Wed, 31 Oct 2007 06:17:03 +0000 (15:17 +0900)]
sh: Kill off dead ipr_irq_demux().
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Linus Torvalds [Wed, 31 Oct 2007 05:23:27 +0000 (22:23 -0700)]
Merge git://git./linux/kernel/git/gregkh/driver-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-2.6:
add SubmittingPatches to Documentation/ja_JP
fix typo in SubmittingPatches
Driver Core: fix bug in device_rename() for SYSFS_DEPRECATED=y
sysfs: make sysfs_{get,put}_active() static
kobject: check for duplicate names in kobject_rename
Driver core: remove class_device_*_bin_file
Keiichi Kii [Fri, 26 Oct 2007 06:55:24 +0000 (15:55 +0900)]
add SubmittingPatches to Documentation/ja_JP
This patch adds SubmittingPatches translated into Japanese to
Documentation/ja_JP directory.
I attach the patch because there is a possibility that MUA
will change the character encoding sometimes.
Signed-off-by: Keiichi KII <k-keiichi@bx.jp.nec.com>
Cc: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Keiichi Kii [Fri, 26 Oct 2007 06:51:44 +0000 (15:51 +0900)]
fix typo in SubmittingPatches
Fix typo.
Signed-off-by: Keiichi Kii <k-keiichi@bx.jp.nec.com>
Cc: Andy Whitcroft <apw@shadowen.org>
Cc: Randy Dunlap <randy.dunlap@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Kay Sievers [Fri, 26 Oct 2007 18:07:44 +0000 (20:07 +0200)]
Driver Core: fix bug in device_rename() for SYSFS_DEPRECATED=y
This should fix the sysfs warnings that renaming network devices is
causing to show up with CONFIG_SYSFS_DEPRECATED=y
The code just shouldn't run if class devices are real directories, it's
an update for the symlink in the class directory. Nobody noticed that as
long as the creation of sysfs files silently failed, and we both missed
it before the merge, because we don't run SYSFS_DEPRECATED=y.
Signed-off-by: Kay Sievers <kay.sievers@vrfy.org>
Cc: Larry Finger <Larry.Finger@lwfinger.net>
Cc: David Miller <davem@davemloft.net>
Cc: Rafael J. Wysocki <rjw@sisk.pl>
Cc: Tejun Heo <htejun@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Adrian Bunk [Wed, 24 Oct 2007 16:23:32 +0000 (18:23 +0200)]
sysfs: make sysfs_{get,put}_active() static
sysfs_{get,put}_active() can now become static.
Signed-off-by: Adrian Bunk <bunk@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Greg Kroah-Hartman [Wed, 24 Oct 2007 23:52:31 +0000 (16:52 -0700)]
kobject: check for duplicate names in kobject_rename
This should catch any duplicate names before we try to tell sysfs to
rename the object. This happens a lot with older versions of udev and
the network rename scripts.
Cc: David Miller <davem@davemloft.net>
Cc: Kay Sievers <kay.sievers@vrfy.org>
Cc: Rafael J. Wysocki <rjw@sisk.pl>
Cc: Tejun Heo <htejun@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Greg Kroah-Hartman [Wed, 17 Oct 2007 21:52:43 +0000 (15:52 -0600)]
Driver core: remove class_device_*_bin_file
These functions are not used by anyone, so remove them from the tree.
The class_device code will be removed soon anyway, so no future users
will ever be possible.
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
David S. Miller [Wed, 31 Oct 2007 04:44:00 +0000 (21:44 -0700)]
[TIPC]: Fix headercheck wrt. tipc_config.h
It wants string functions like memcpy() for inline
routines, and these define userland interfaces.
The only clean way to deal with this is to simply
put linux/string.h into unifdef-y and have it
include <string.h> when not-__KERNEL__.
Signed-off-by: David S. Miller <davem@davemloft.net>
David S. Miller [Mon, 29 Oct 2007 07:54:39 +0000 (00:54 -0700)]
[COMPAT]: Fix build on COMPAT platforms when CONFIG_NET is disabled.
Add some missing cond_syscall() entries for this case.
Signed-off-by: David S. Miller <davem@davemloft.net>
Michal Januszewski [Wed, 31 Oct 2007 03:41:49 +0000 (20:41 -0700)]
[CONNECTOR]: Fix a spurious kfree_skb() call
Remove a spurious call to kfree_skb() in the connector rx_skb handler.
This fixes a regression introduced by the '[NET]: make netlink user ->
kernel interface synchronious' patch (
cd40b7d3983c708aabe3d3008ec64ffce56d33b0)
Signed-off-by: Michal Januszewski <spock@gentoo.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Benjamin Herrenschmidt [Wed, 31 Oct 2007 03:40:45 +0000 (20:40 -0700)]
[COMPAT]: Fix new dev_ifname32 returning -EFAULT
A stray semicolon slipped in the patch that updated dev_ifname32 to
not be inline, causing it to always return -EFAULT. This fixes it.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
David S. Miller [Wed, 31 Oct 2007 04:29:29 +0000 (21:29 -0700)]
[NET]: Fix incorrect sg_mark_end() calls.
This fixes scatterlist corruptions added by
commit
68e3f5dd4db62619fdbe520d36c9ebf62e672256
[CRYPTO] users: Fix up scatterlist conversion errors
The issue is that the code calls sg_mark_end() which clobbers the
sg_page() pointer of the final scatterlist entry.
The first part fo the fix makes skb_to_sgvec() do __sg_mark_end().
After considering all skb_to_sgvec() call sites the most correct
solution is to call __sg_mark_end() in skb_to_sgvec() since that is
what all of the callers would end up doing anyways.
I suspect this might have fixed some problems in virtio_net which is
the sole non-crypto user of skb_to_sgvec().
Other similar sg_mark_end() cases were converted over to
__sg_mark_end() as well.
Arguably sg_mark_end() is a poorly named function because it doesn't
just "mark", it clears out the page pointer as a side effect, which is
what led to these bugs in the first place.
The one remaining plain sg_mark_end() call is in scsi_alloc_sgtable()
and arguably it could be converted to __sg_mark_end() if only so that
we can delete this confusing interface from linux/scatterlist.h
Signed-off-by: David S. Miller <davem@davemloft.net>
Alexey Dobriyan [Tue, 30 Oct 2007 22:40:49 +0000 (15:40 -0700)]
[IPVS]: Remove /proc/net/ip_vs_lblcr
It's under CONFIG_IP_VS_LBLCR_DEBUG option which never existed.
Signed-off-by: Alexey Dobriyan <adobriyan@sw.ru>
Signed-off-by: David S. Miller <davem@davemloft.net>
Daniel Lezcano [Tue, 30 Oct 2007 22:39:33 +0000 (15:39 -0700)]
[IPV6]: remove duplicate call to proc_net_remove
The file /proc/net/if_inet6 is removed twice.
First time in:
inet6_exit
->addrconf_cleanup
And followed a few lines after by:
inet6_exit
-> if6_proc_exit
Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Daniel Lezcano [Tue, 30 Oct 2007 22:38:57 +0000 (15:38 -0700)]
[NETNS]: fix net released by rcu callback
When a network namespace reference is held by a network subsystem,
and when this reference is decremented in a rcu update callback, we
must ensure that there is no more outstanding rcu update before
trying to free the network namespace.
In the normal case, the rcu_barrier is called when the network namespace
is exiting in the cleanup_net function.
But when a network namespace creation fails, and the subsystems are
undone (like the cleanup), the rcu_barrier is missing.
This patch adds the missing rcu_barrier.
Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Daniel Lezcano [Tue, 30 Oct 2007 22:38:18 +0000 (15:38 -0700)]
[NET]: Fix free_netdev on register_netdev failure.
Point 1:
The unregistering of a network device schedule a netdev_run_todo.
This function calls dev->destructor when it is set and the
destructor calls free_netdev.
Point 2:
In the case of an initialization of a network device the usual code
is:
* alloc_netdev
* register_netdev
-> if this one fails, call free_netdev and exit with error.
Point 3:
In the register_netdevice function at the later state, when the device
is at the registered state, a call to the netdevice_notifiers is made.
If one of the notification falls into an error, a rollback to the
registered state is done using unregister_netdevice.
Conclusion:
When a network device fails to register during initialization because
one network subsystem returned an error during a notification call
chain, the network device is freed twice because of fact 1 and fact 2.
The second free_netdev will be done with an invalid pointer.
Proposed solution:
The following patch move all the code of unregister_netdevice *except*
the call to net_set_todo, to a new function "rollback_registered".
The following functions are changed in this way:
* register_netdevice: calls rollback_registered when a notification fails
* unregister_netdevice: calls rollback_register + net_set_todo, the call
order to net_set_todo is changed because it is the
latest now. Since it justs add an element to a list
that should not break anything.
Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Adrian Bunk [Tue, 30 Oct 2007 22:34:34 +0000 (15:34 -0700)]
[WAN]: fix drivers/net/wan/lmc/ compilation
Signed-off-by: Adrian Bunk <bunk@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Linus Torvalds [Tue, 30 Oct 2007 22:26:56 +0000 (15:26 -0700)]
Merge branch 'for-linus' of git://git./linux/kernel/git/roland/infiniband
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband:
IB/fmr_pool: Stop ib_fmr threads from contributing to load average
IB/ipath: Fix incorrect use of sizeof on msg buffer (function argument)
IB/ipath: Limit length checksummed in eeprom
IB/ipath: Fix a race where s_last is updated without lock held
IB/mlx4: Lock SQ lock in mlx4_ib_post_send()
IPoIB/cm: Fix receive QP cleanup
Anton Blanchard [Tue, 30 Oct 2007 21:57:43 +0000 (14:57 -0700)]
IB/fmr_pool: Stop ib_fmr threads from contributing to load average
I noticed my machine was at a constant load average of 1. This was
because ib_create_fmr_pool calls kthread_create but does not
immediately wake the thread up.
Change to using kthread_run so we enter ib_fmr_cleanup_thread(), set
TASK_INTERRUPTIBLE, then go to sleep.
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Dirk Hohndel [Tue, 30 Oct 2007 20:37:19 +0000 (13:37 -0700)]
Kbuild/doc: fix links to Documentation files
Fix links to files in Documentation/* in various Kconfig files
Signed-off-by: Dirk Hohndel <hohndel@linux.intel.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Zach Brown [Tue, 30 Oct 2007 18:45:46 +0000 (11:45 -0700)]
dio: fix cache invalidation after sync writes
Commit commit
65b8291c4000e5f38fc94fb2ca0cb7e8683c8a1b ("dio: invalidate
clean pages before dio write") introduced a bug which stopped dio from
ever invalidating the page cache after writes. It still invalidated it
before writes so most users were fine.
Karl Schendel reported ( http://lkml.org/lkml/2007/10/26/481 ) hitting
this bug when he had a buffered reader immediately reading file data
after an O_DIRECT wirter had written the data. The kernel issued
read-ahead beyond the position of the reader which overlapped with the
O_DIRECT writer. The failure to invalidate after writes caused the
reader to see stale data from the read-ahead.
The following patch is originally from Karl. The following commentary
is his:
The below 3rd try takes on your suggestion of just invalidating
no matter what the retval from the direct_IO call. I ran it
thru the test-case several times and it has worked every time.
The post-invalidate is probably still too early for async-directio,
but I don't have a testcase for that; just sync. And, this
won't be any worse in the async case.
I added a test to the aio-dio-regress repository which mimics Karl's IO
pattern. It verifed the bad behaviour and that the patch fixed it. I
agree with Karl, this still doesn't help the case where a buffered
reader follows an AIO O_DIRECT writer. That will require a bit more
work.
This gives up on the idea of returning EIO to indicate to userspace that
stale data remains if the invalidation failed.
Signed-off-by: Zach Brown <zach.brown@oracle.com>
Cc: Karl Schendel <kschendel@datallegro.com>
Cc: Benjamin LaHaise <bcrl@kvack.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Nick Piggin <nickpiggin@yahoo.com.au>
Cc: Leonid Ananiev <leonid.i.ananiev@linux.intel.com>
Cc: Chris Mason <chris.mason@oracle.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Linus Torvalds [Tue, 30 Oct 2007 19:04:45 +0000 (12:04 -0700)]
Merge branch 'release' of git://git./linux/kernel/git/aegl/linux-2.6
* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6:
[IA64] Fix incorrect return value from ia64_setup_msi_irq()
[IA64] arch/ia64/sn/kernel/mca.c: undo lock when sn_oemdata can't be extended
[IA64] update sn2 defconfig to 64kb pages
[IA64] fix typo in per_cpu_offset
[IA64] /proc/cpuinfo "physical id" field cleanups
[IA64] vDSO vs --build-id
[IA64] check-segrel.lds vs --build-id
[IA64] vmcore_find_descriptor_size should be in __init
[IA64] ia64/mm/init.c: fix section mismatches
Linus Torvalds [Tue, 30 Oct 2007 19:04:29 +0000 (12:04 -0700)]
Merge branch 'upstream-linus' of git://git./linux/kernel/git/jgarzik/netdev-2.6
* 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/netdev-2.6:
ixgb: fix TX hangs under heavy load
e1000e: Fix typo ! &
ixgbe: minor sparse fixes
e1000: sparse warnings fixes
ixgb: fix sparse warnings
e1000e: fix sparse warnings
mv643xx_eth: Fix MV643XX_ETH offsets used by Pegasos 2
Blackfin EMAC driver: Fix Ethernet communication bug (dupliated and lost packets)
DM9601: Support for ADMtek ADM8515 NIC
Linus Torvalds [Tue, 30 Oct 2007 18:49:13 +0000 (11:49 -0700)]
Merge branch 'upstream-linus' of git://git./linux/kernel/git/jgarzik/libata-dev
* 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev:
libata: implement and use ATA_QCFLAG_QUIET
libata: stop being overjealous about non-IO commands
libata: flush is an IO command
sata_promise: cleanups
sata_promise: ASIC PRD table bug workaround, take 2