aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2010-10-27mm: fix race in kunmap_atomic()Peter Zijlstra10-9/+26
Christoph reported a nice splat which illustrated a race in the new stack based kmap_atomic implementation. The problem is that we pop our stack slot before we're completely done resetting its state -- in particular clearing the PTE (sometimes that's CONFIG_DEBUG_HIGHMEM). If an interrupt happens before we actually clear the PTE used for the last slot, that interrupt can reuse the slot in a dirty state, which triggers a BUG in kmap_atomic(). Fix this by introducing kmap_atomic_idx() which reports the current slot index without actually releasing it and use that to find the PTE and delay the _pop() until after we're completely done. Signed-off-by: Peter Zijlstra <[email protected]> Reported-by: Christoph Hellwig <[email protected]> Acked-by: Rik van Riel <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2010-10-27mm,x86: fix kmap_atomic_push vs ioremap_32.cPeter Zijlstra2-22/+30
It appears i386 uses kmap_atomic infrastructure regardless of CONFIG_HIGHMEM which results in a compile error when highmem is disabled. Cure this by providing the needed few bits for both CONFIG_HIGHMEM and CONFIG_X86_32. Signed-off-by: Peter Zijlstra <[email protected]> Reported-by: Chris Wilson <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2010-10-28quota: Fix possible oops in __dquot_initialize()Jan Kara1-0/+3
When quotaon(8) races with __dquot_initialize() or dqget() fails because of EIO, ENOSPC, or similar error, we could possibly dereference NULL pointer in inode->i_dquot[cnt]. Add proper checking. Reported-by: Dmitry Monakhov <[email protected]> Signed-off-by: Jan Kara <[email protected]>
2010-10-28ext3: Update kernel-doc commentsNamhyung Kim2-12/+20
Update missing/broken argument descriptions and fix formatting. Signed-off-by: Namhyung Kim <[email protected]> Signed-off-by: Jan Kara <[email protected]>
2010-10-28jbd/2: fixed typosAndrea Gelmini2-2/+2
"wakup" Signed-off-by: Andrea Gelmini <[email protected]> Signed-off-by: Jan Kara <[email protected]>
2010-10-28ext2: fixed typo.Andrea Gelmini1-1/+1
"excpet" Signed-off-by: Andrea Gelmini <[email protected]> Signed-off-by: Jan Kara <[email protected]>
2010-10-28ext3: Fix debug messages in ext3_group_extend()Namhyung Kim1-6/+7
Fix a typo, break long lines and use E3FSBLK on ext3_fsblk_t. Signed-off-by: Namhyung Kim <[email protected]> Signed-off-by: Jan Kara <[email protected]>
2010-10-28jbd: Convert atomic_inc() to get_bh()Namhyung Kim2-3/+3
Convert atomic_inc(&bh->b_count) to get_bh(bh) for consistency. Signed-off-by: Namhyung Kim <[email protected]> Signed-off-by: Jan Kara <[email protected]>
2010-10-28ext3: Remove misplaced BUFFER_TRACE() in ext3_truncate()Namhyung Kim1-1/+0
Signed-off-by: Namhyung Kim <[email protected]> Signed-off-by: Jan Kara <[email protected]>
2010-10-28jbd: Fix debug message in do_get_write_access()Namhyung Kim1-1/+1
'buffer_head' should be 'journal_head'. Signed-off-by: Namhyung Kim <[email protected]> Signed-off-by: Jan Kara <[email protected]>
2010-10-28jbd: Check return value of __getblk()Namhyung Kim1-0/+2
Fail journal creation if __getblk() returns NULL. unlikely() is added because it is called in a loop and we've been OK without the check until now. Signed-off-by: Namhyung Kim <[email protected]> Signed-off-by: Jan Kara <[email protected]>
2010-10-28ext3: Use DIV_ROUND_UP() on group desc block countingNamhyung Kim1-2/+1
Signed-off-by: Namhyung Kim <[email protected]> Signed-off-by: Jan Kara <[email protected]>
2010-10-28ext3: Return proper error code on ext3_fill_super()Namhyung Kim1-0/+2
Signed-off-by: Namhyung Kim <[email protected]> Signed-off-by: Jan Kara <[email protected]>
2010-10-28ext3: Remove unnecessary casts on bh->b_dataNamhyung Kim2-5/+5
bh->b_data is already a pointer to char so casts to 'char *' should be meaningless. Remove them. Signed-off-by: Namhyung Kim <[email protected]> Signed-off-by: Jan Kara <[email protected]>
2010-10-28ext3: Cleanup ext3_setup_super()Namhyung Kim1-3/+3
Fix mount-count check to emit warning only if s_max_mnt_count is greater than 0 according to man tune2fs(8). Also removes unnecessary casts. Signed-off-by: Namhyung Kim <[email protected]> Signed-off-by: Jan Kara <[email protected]>
2010-10-28quota: Fix issuing of warnings from dquot_transferJan Kara1-7/+6
__dquot_transfer accidentally called flush_warnings for a wrong set of dquots which could result in quota warnings being issued with a wrong identification. Also when operation fails because of EDQUOT, there's no need check for issuing information message about user getting below limits (no transfer has actually happened). Signed-off-by: Jan Kara <[email protected]>
2010-10-28quota: fix dquot_disable vs dquot_transfer race v2Dmitry1-6/+12
I've got following lockup: dquot_disable dquot_transfer ->dqget() sb_has_quota_active dqopt->flags &= ~dquot_state_flag(f, cnt) atomic_inc(dq->dq_count) ->drop_dquot_ref(sb, cnt); down_write(dqptr_sem) inode->i_dquot[cnt] = NULL ->__dquot_transfer invalidate_dquots(sb, cnt); down_write(&dqptr_sem) ->wait for dq_wait_unused inode->i_dquot = new_dquot /* wait forever */ ^^^^New quota user^^^^^^ We cannot allow new references to dquots from inodes after drop_dquot_ref() has removed them. We have to recheck quota state under dqptr_sem and before assignment, as we do it in dquot_initialize(). Signed-off-by: Dmitry Monakhov <[email protected]> Signed-off-by: Jan Kara <[email protected]>
2010-10-28jbd: Convert bitops to buffer fnsNamhyung Kim1-3/+3
Convert set/clear_bit(BH_JWrite, ...) to set/clear_buffer_jwrite() for consistency. Signed-off-by: Namhyung Kim <[email protected]> Signed-off-by: Jan Kara <[email protected]>
2010-10-28ext3/jbd: Avoid WARN() messages when failing to write the superblockDarrick J. Wong2-3/+51
This fixes a WARN backtrace in mark_buffer_dirty() that occurs during unmount when the underlying block device is removed. This bug has been seen on System Z when removing all paths from a multipath-backed ext3 mount; on System P when injecting enough PCI EEH errors to make the SCSI controller go offline; and similar warnings have been seen (and patched) with ext2/ext4. The super block update from a previous operation has marked the buffer as in error, and the flag has to be cleared before doing the update. Similar changes have been made to ext4 by commit 914258bf2cb22bf4336a1b1d90c551b4b11ca5aa. Signed-off-by: Darrick J. Wong <[email protected]> Signed-off-by: Jan Kara <[email protected]>
2010-10-28jbd: Use offset_in_page() instead of manual calculationNamhyung Kim1-1/+1
Signed-off-by: Namhyung Kim <[email protected]> Signed-off-by: Jan Kara <[email protected]>
2010-10-28jbd: Remove unnecessary goto statementNamhyung Kim1-2/+0
Remove goto statement which jumps to very next line. Also remove target label because it is no longer used anywhere. Signed-off-by: Namhyung Kim <[email protected]> Signed-off-by: Jan Kara <[email protected]>
2010-10-28jbd: Use printk_ratelimited() in journal_alloc_journal_head()Namhyung Kim1-6/+4
Use printk_ratelimited() instead of doing it manually. Signed-off-by: Namhyung Kim <[email protected]> Signed-off-by: Jan Kara <[email protected]>
2010-10-28jbd: Move debug message into #ifdef areaNamhyung Kim1-1/+1
Move call to jbd_debug() into #ifdef CONFIG_JBD_DEBUG block because 'dropped' is declared there. The code could be compiled without this change anyway, simply because jbd_debug() expands to nothing if !CONFIG_JBD_DEBUG but IMHO it doesn't look good in general. Signed-off-by: Namhyung Kim <[email protected]> Signed-off-by: Jan Kara <[email protected]>
2010-10-28ext2: fix comment on ext2_try_to_allocate()Namhyung Kim1-2/+1
@handle doesn't exist in ext2. Remove it. Also, fit comment header into kernel-doc format. Signed-off-by: Namhyung Kim <[email protected]> Signed-off-by: Jan Kara <[email protected]>
2010-10-27ehea: Fixing statisticsBreno Leitao2-6/+28
(Applied over Eric's "ehea: fix use after free" patch) Currently ehea stats are broken. The bytes counters are got from the hardware, while the packets counters are got from the device driver. Also, the device driver counters are resetted during the the down process, and the hardware aren't, causing some weird numbers. This patch just consolidates the packets and bytes on the device driver. Signed-off-by: Breno Leitao <[email protected]> Reviewed-by: Eric Dumazet <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2010-10-27bonding: Fix lockdep warning after bond_vlan_rx_register()Jarek Poplawski1-2/+2
Fix lockdep warning: [ 52.991402] ====================================================== [ 52.991511] [ INFO: SOFTIRQ-safe -> SOFTIRQ-unsafe lock order detected ] [ 52.991569] 2.6.36-04573-g4b60626-dirty #65 [ 52.991622] ------------------------------------------------------ [ 52.991696] ip/4842 [HC0[0]:SC0[4]:HE1:SE0] is trying to acquire: [ 52.991758] (&bond->lock){++++..}, at: [<efe4d300>] bond_set_multicast_list+0x60/0x2c0 [bonding] [ 52.991966] [ 52.991967] and this task is already holding: [ 52.992008] (&bonding_netdev_addr_lock_key){+.....}, at: [<c04e5530>] dev_mc_sync+0x50/0xa0 [ 52.992008] which would create a new lock dependency: [ 52.992008] (&bonding_netdev_addr_lock_key){+.....} -> (&bond->lock){++++..} [ 52.992008] [ 52.992008] but this new dependency connects a SOFTIRQ-irq-safe lock: [ 52.992008] (&(&mc->mca_lock)->rlock){+.-...} [ 52.992008] ... which became SOFTIRQ-irq-safe at: [ 52.992008] [<c0272beb>] __lock_acquire+0x96b/0x1960 [ 52.992008] [<c027415e>] lock_acquire+0x7e/0xf0 [ 52.992008] [<c05f356d>] _raw_spin_lock_bh+0x3d/0x50 [ 52.992008] [<c0584e40>] mld_ifc_timer_expire+0xf0/0x280 [ 52.992008] [<c024cee6>] run_timer_softirq+0x146/0x310 [ 52.992008] [<c024591d>] __do_softirq+0xad/0x1c0 [ 52.992008] [ 52.992008] to a SOFTIRQ-irq-unsafe lock: [ 52.992008] (&bond->lock){++++..} [ 52.992008] ... which became SOFTIRQ-irq-unsafe at: [ 52.992008] ... [<c0272c3b>] __lock_acquire+0x9bb/0x1960 [ 52.992008] [<c027415e>] lock_acquire+0x7e/0xf0 [ 52.992008] [<c05f36b8>] _raw_write_lock+0x38/0x50 [ 52.992008] [<efe4cbe4>] bond_vlan_rx_register+0x24/0x70 [bonding] [ 52.992008] [<c0598010>] register_vlan_dev+0xc0/0x280 [ 52.992008] [<c0599f3a>] vlan_newlink+0xaa/0xd0 [ 52.992008] [<c04ed4b4>] rtnl_newlink+0x404/0x490 [ 52.992008] [<c04ece35>] rtnetlink_rcv_msg+0x1e5/0x220 [ 52.992008] [<c050424e>] netlink_rcv_skb+0x8e/0xb0 [ 52.992008] [<c04ecbac>] rtnetlink_rcv+0x1c/0x30 [ 52.992008] [<c0503bfb>] netlink_unicast+0x24b/0x290 [ 52.992008] [<c0503e37>] netlink_sendmsg+0x1f7/0x310 [ 52.992008] [<c04cd41c>] sock_sendmsg+0xac/0xe0 [ 52.992008] [<c04ceb80>] sys_sendmsg+0x130/0x230 [ 52.992008] [<c04cf04e>] sys_socketcall+0xde/0x280 [ 52.992008] [<c0202d10>] sysenter_do_call+0x12/0x36 [ 52.992008] [ 52.992008] other info that might help us debug this: ... [ Full info at netdev: Wed, 27 Oct 2010 12:24:30 +0200 Subject: [BUG net-2.6 vlan/bonding] lockdep splats ] Use BH variant of write_lock(&bond->lock) (as elsewhere in bond_main) to prevent this dependency. Fixes commit f35188faa0fbabefac476536994f4b6f3677380f [v2.6.36] Reported-by: Eric Dumazet <[email protected]> Tested-by: Eric Dumazet <[email protected]> Signed-off-by: Jarek Poplawski <[email protected]> Acked-by: Eric Dumazet <[email protected]> Cc: Jay Vosburgh <[email protected]>
2010-10-27tunnels: Fix tunnels change rcu protectionPavel Emelyanov4-0/+4
After making rcu protection for tunnels (ipip, gre, sit and ip6) a bug was introduced into the SIOCCHGTUNNEL code. The tunnel is first unlinked, then addresses change, then it is linked back probably into another bucket. But while changing the parms, the hash table is unlocked to readers and they can lookup the improper tunnel. Respective commits are b7285b79 (ipip: get rid of ipip_lock), 1507850b (gre: get rid of ipgre_lock), 3a43be3c (sit: get rid of ipip6_lock) and 94767632 (ip6tnl: get rid of ip6_tnl_lock). The quick fix is to wait for quiescent state to pass after unlinking, but if it is inappropriate I can invent something better, just let me know. Signed-off-by: Pavel Emelyanov <[email protected]> Acked-by: Eric Dumazet <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2010-10-27locks: turn lock_flocks into a spinlockArnd Bergmann2-3/+3
Nothing depends on lock_flocks using the BKL any more, so we can do the switch over to a private spinlock. Signed-off-by: Arnd Bergmann <[email protected]>
2010-10-27fasync: re-organize fasync entry insertion to allow it under a spinlockLinus Torvalds3-17/+72
You currently cannot use "fasync_helper()" in an atomic environment to insert a new fasync entry, because it will need to allocate the new "struct fasync_struct". Yet fcntl_setlease() wants to call this under lock_flocks(), which is in the process of being converted from the BKL to a spinlock. In order to fix this, this abstracts out the actual fasync list insertion and the fasync allocations into functions of their own, and teaches fs/locks.c to pre-allocate the fasync_struct entry. That way the actual list insertion can happen while holding the required spinlock. Signed-off-by: Linus Torvalds <[email protected]> [[email protected]: rebase on top of my changes to Arnd's patch] Tested-by: J. Bruce Fields <[email protected]> Signed-off-by: Arnd Bergmann <[email protected]>
2010-10-27locks/nfsd: allocate file lock outside of spinlockArnd Bergmann3-35/+28
As suggested by Christoph Hellwig, this moves allocation of new file locks out of generic_setlease into the callers, nfs4_open_delegation and fcntl_setlease in order to allow GFP_KERNEL allocations when lock_flocks has become a spinlock. Signed-off-by: Arnd Bergmann <[email protected]> Acked-by: J. Bruce Fields <[email protected]>
2010-10-27lockd: fix nlmsvc_notify_blocked lockingJ. Bruce Fields1-2/+4
nlmsvc_notify_blocked walks the nlm_blocked list, which requires nlm_blocked_lock. Signed-off-by: J. Bruce Fields <[email protected]> Signed-off-by: Arnd Bergmann <[email protected]>
2010-10-27lockd: push lock_flocks downArnd Bergmann4-14/+8
lockd should use lock_flocks() instead of lock_kernel() to lock against posix locks accessing the i_flock list. This is a prerequisite to turning lock_flocks into a spinlock. Signed-off-by: Arnd Bergmann <[email protected]> Acked-by: J. Bruce Fields <[email protected]>
2010-10-27caif-u5500: Build config for CAIF shared mem driverAmarnath Revanna2-0/+11
Signed-off-by: Sjur Braendeland <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2010-10-27caif-u5500: CAIF shared memory mailbox interfaceAmarnath Revanna1-0/+129
Signed-off-by: Sjur Braendeland <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2010-10-27caif-u5500: CAIF shared memory transport protocol[email protected]1-0/+744
Signed-off-by: Sjur Braendeland <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2010-10-27caif-u5500: Adding shared memory includeAmarnath Revanna1-0/+26
Signed-off-by: Sjur Braendeland <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2010-10-27drivers/isdn: delete double assignmentJulia Lawall2-5/+3
Delete successive assignments to the same location. In the first case, the hscx array has two elements, so change the assignment to initialize the second one. In the second case, the two assignments are simply identical. Furthermore, neither is necessary, because the effect of the assignment is only visible in the next line, in the assignment in the if test. The patch inlines the right hand side value in the latter assignment and pulls that assignment out of the if test. A simplified version of the semantic match that finds this problem is as follows: (http://coccinelle.lip6.fr/) // <smpl> @@ expression i; @@ *i = ...; i = ...; // </smpl> Signed-off-by: Julia Lawall <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2010-10-27drivers/net/typhoon.c: delete double assignmentJulia Lawall1-1/+1
Delete successive assignments to the same location. The current definition does not initialize the respRing structure, which has the same type as the cmdRing structure, so initialize that one instead. A simplified version of the semantic match that finds this problem is as follows: (http://coccinelle.lip6.fr/) // <smpl> @@ expression i; @@ *i = ...; i = ...; // </smpl> Signed-off-by: Julia Lawall <[email protected]> Acked-by: David Dillow <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2010-10-27drivers/net/sb1000.c: delete double assignmentJulia Lawall1-3/+3
The other code around these duplicated assignments initializes the 0 1 2 and 3 elements of an array, so change the initialization of the rx_session_id array to do the same. A simplified version of the semantic match that finds this problem is as follows: (http://coccinelle.lip6.fr/) // <smpl> @@ expression i; @@ *i = ...; i = ...; // </smpl> Signed-off-by: Julia Lawall <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2010-10-27qlcnic: define valid vlan id rangeSony Chacko1-1/+1
4095 vlan id is reserved and should not be use. Signed-off-by: Sony Chacko <[email protected]> Signed-off-by: Amit Kumar Salecha <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2010-10-27qlcnic: reduce rx ring sizeSony Chacko3-20/+21
If eswitch is enabled, rcv ring size can be reduce, as physical port is partition-ed. Signed-off-by: Sony Chacko <[email protected]> Signed-off-by: Amit Kumar Salecha <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2010-10-27qlcnic: fix mac learningamit salecha2-0/+6
In failover bonding case, same mac address can be programmed on other slave function. Fw will delete old entry (original func) associated with that mac address. Need to reporgram mac address, if failover again happen to original function. Signed-off-by: Amit Kumar Salecha <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2010-10-27ehea: fix use after freeEric Dumazet1-5/+5
ehea_start_xmit() dereferences skb after its freeing in ehea_xmit3() to get vlan tags. Move the offending block before the potential ehea_xmit3() call. Signed-off-by: Eric Dumazet <[email protected]> Signed-off-by: Breno Leitao <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2010-10-27inetpeer: __rcu annotationsEric Dumazet2-59/+81
Adds __rcu annotations to inetpeer (struct inet_peer)->avl_left (struct inet_peer)->avl_right This is a tedious cleanup, but removes one smp_wmb() from link_to_pool() since we now use more self documenting rcu_assign_pointer(). Note the use of RCU_INIT_POINTER() instead of rcu_assign_pointer() in all cases we dont need a memory barrier. Signed-off-by: Eric Dumazet <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2010-10-27fib_rules: __rcu annotates ctargetEric Dumazet2-6/+7
Adds __rcu annotation to (struct fib_rule)->ctarget Signed-off-by: Eric Dumazet <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2010-10-27tunnels: add __rcu annotationsEric Dumazet3-13/+22
Add __rcu annotations to : (struct ip_tunnel)->prl (struct ip_tunnel_prl_entry)->next (struct xfrm_tunnel)->next struct xfrm_tunnel *tunnel4_handlers struct xfrm_tunnel *tunnel64_handlers And use appropriate rcu primitives to reduce sparse warnings if CONFIG_SPARSE_RCU_POINTER=y Signed-off-by: Eric Dumazet <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2010-10-27net: add __rcu annotations to protocolEric Dumazet3-8/+12
Add __rcu annotations to : struct net_protocol *inet_protos struct net_protocol *inet6_protos And use appropriate casts to reduce sparse warnings if CONFIG_SPARSE_RCU_POINTER=y Signed-off-by: Eric Dumazet <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2010-10-27ipv4: add __rcu annotations to routes.cEric Dumazet2-30/+47
Add __rcu annotations to : (struct dst_entry)->rt_next (struct rt_hash_bucket)->chain And use appropriate rcu primitives to reduce sparse warnings if CONFIG_SPARSE_RCU_POINTER=y Signed-off-by: Eric Dumazet <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2010-10-27qlge: bugfix: Restoring the vlan setting.Ron Mercer1-0/+17
Signed-off-by: Jitendra Kalsaria <[email protected]> Signed-off-by: Ron Mercer <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2010-10-27be2net: Schedule/Destroy worker thread in probe()/remove() rather than ↵Somnath Kotur1-4/+18
open()/close() When async mcc compls are rcvd on an i/f that is down (and so interrupts are disabled) they just lie unprocessed in the compl queue.The compl queue can eventually get filled up and cause the BE to lock up.The fix is to use be_worker to reap mcc compls when the i/f is down.be_worker is now launched in be_probe() and canceled in be_remove(). Signed-off-by: Somnath Kotur <[email protected]> Signed-off-by: David S. Miller <[email protected]>