1. 22 May, 2008 8 commits
    • Ivo van Doorn's avatar
      rt2x00: Remove redundant flags/dev_flags initializations · dec13b6b
      Ivo van Doorn authored
      the rxdesc structure is properly memsetted before passed to
      the driver. This means we don't have to reinitialize the flags
      and dev_flags fields in the drivers again.
      This will prevent problems when the rxdone handler is adding
      flags in a earlier status and will make the code look nicer
      when we are adding more read attributes in the rxdone handler
      in the driver.
      Signed-off-by: default avatarIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      dec13b6b
    • Ivo van Doorn's avatar
      rt2x00: Split rt2x00lib_write_tx_desc() · 7050ec82
      Ivo van Doorn authored
      Split rt2x00lib_write_tx_desc() up into a TX descriptor initializor
      and TX descriptor writer.
      
      This split is required to properly allow mac80211 to move its
      tx_control structure into the skb->cb array.
      The rt2x00queue_create_tx_descriptor() function will read all tx control
      information and convert it into a rt2x00 TX descriptor information structure.
      After that function is complete, we have all information we needed from the
      tx control structure and are free to start writing into the skb->cb array
      for our own purposes.
      rt2x00queue_write_tx_descriptor() will be in charge of really sending
      the TX descriptor to the hardware and kicking the TX queue.
      Signed-off-by: default avatarIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      7050ec82
    • Gertjan van Wingerde's avatar
      rt2x00: Only initialize the minimum needed fields of PCI TX descriptors. · 4de36fe5
      Gertjan van Wingerde authored
      In preparation of replacing the statically allocated data DMA buffers with DMA-mapped
      skb's we need to change the TXD handling of the PCI drivers, by moving the programming
      of the buffer address fields to the actual TXD writing at TX time, instead of at start-up
      time.
      Signed-off-by: default avatarGertjan van Wingerde <gwingerde@kpnplanet.nl>
      Signed-off-by: default avatarIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      4de36fe5
    • Ivo van Doorn's avatar
      rt2x00: Preserve descriptor information after memmove() · 70a96109
      Ivo van Doorn authored
      Due to usage of memmove() in rt2x00usb the descriptor can become
      corrupted because it is being overwritten by the data part.
      Overall having the descriptor in front of the frame is a bad idea,
      we can however use the skb->cb array for this task, since that
      contains more then enough room to hold the entire descriptor and
      preserve the information long enough.
      
      After this we can also cleanup the alignment code a bit to make it
      work a bit more flexible to allow for all kinds of odd header lengths.
      Signed-off-by: default avatarIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      70a96109
    • Gertjan van Wingerde's avatar
      rt2x00: Fix queue related oops in case of deselected mac80211 multi-queue feature. · 61448f88
      Gertjan van Wingerde authored
      With the integration of the mac80211 multiqueue patches it has become possible that the
      mac80211 layer modifies the number of TX queues that is stored inside the ieee80211_hw
      structure, especially when multi-queue is not selected.
      
      The rt2x00 drivers are not well suited to handle that situation, as they allocate the
      queue structures before mac80211 has modified the number of queues it is going to use,
      and also expect the number of allocated queues to match the hardware implementation.
      
      Hence, ensure that rt2x00 maintains by itself the number of queues that the hardware
      supports, and, at the same time, making is not dependent on the preservation of contents
      inside a mac80211 structure.
      Signed-off-by: default avatarGertjan van Wingerde <gwingerde@kpnplanet.nl>
      Signed-off-by: default avatarIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      61448f88
    • Ivo van Doorn's avatar
      rt2x00: Remove ieee80211_tx_control argument from write_tx_desc() · 61486e0f
      Ivo van Doorn authored
      Move the last remaining information details read from ieee80211_tx_control
      in the drivers to the txentry_desc structure. After this we can
      remove ieee80211_tx_control from the argument list for the callback function,
      which makes it easier when the control information is moved into skb->cb
      Signed-off-by: default avatarIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      61486e0f
    • Ivo van Doorn's avatar
      rt2x00: Fix TX status reporting · fb55f4d1
      Ivo van Doorn authored
      The tx_status enumeration was broken since the introduction
      of rt61pci. That driver uses different values to report the
      status of the tx action.
      This would lead to frames that were reported as success but
      actually failed to be send out, or frames that were neither
      successfull or failure which were reported as failure.
      
      Fix this by change the TX status reporting and more explicitely
      check for failure or success. Note that a third possibility is
      added "unknown". Not all hardware (USB) can report the actual
      TX status, for rt61pci some frames will receive this status
      because the TXdone handler is never called for those frames.
      This unknown will now be handled as neither success or failure,
      so we no longer increment the failure counter while this conclusion
      could not be determined from the real status of the frame.
      Signed-off-by: default avatarIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      fb55f4d1
    • Ivo van Doorn's avatar
      rt2x00: trim skb_frame_desc to 32 bytes · 5a6e5999
      Ivo van Doorn authored
      Remove frame_type from skb_frame_desc and pass it
      as argument to rt2x00debug_dump_frame().
      
      Change data_len and desc_len to unsigned short
      to save another 4 bytes in skb_frame_desc. Note that
      this was the only location where the data_len and
      desc_len was not yet treated as unsigned short.
      
      This trim is required to help mac80211 with adding
      the TX control and TX status informtation into the
      skb->cb structure. When that happens, drivers will
      have approximately 40 bytes left to use freely.
      Signed-off-by: default avatarIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      5a6e5999
  2. 19 May, 2008 5 commits
  3. 17 May, 2008 6 commits
  4. 15 May, 2008 21 commits
    • David S. Miller's avatar
    • David S. Miller's avatar
      Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 · 63fe46da
      David S. Miller authored
      Conflicts:
      
      	drivers/net/wireless/iwlwifi/iwl-4965-rs.c
      	drivers/net/wireless/rt2x00/rt61pci.c
      63fe46da
    • Marcin Slusarz's avatar
      isdn/capi: Return proper errnos on module init. · 066b2118
      Marcin Slusarz authored
      cdebug_init() is called from kcapi_init() which is module
      initialization function, so it must return negative values on errors.
      Signed-off-by: default avatarMarcin Slusarz <marcin.slusarz@gmail.com>
      Acked-by: default avatarKarsten Keil <kkeil@suse.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      066b2118
    • Alan Cox's avatar
      iphase: Fix 64bit warning. · ffd8211f
      Alan Cox authored
      Time is unsigned long (except when you are in a hurry) so we need to
      store rx_tmp_jif in the right sized object.
      Signed-off-by: default avatarAlan Cox <alan@redhat.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ffd8211f
    • Andrew Morton's avatar
      hysdn: No longer broken on SMP. · 01bbf2c7
      Andrew Morton authored
      With the cli/sti code sorted out we think this driver is OK for use on
      SMP systems.
      Acked-by: default avatarMark Asselstine <mark.asselstine@windriver.com>
      Acked-by: default avatarKarsten Keil <kkeil@suse.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      01bbf2c7
    • Mark Asselstine's avatar
      hysdn: Remove cli()/sti() calls. · a9dd7fe2
      Mark Asselstine authored
      The use of cli()/sti() within the do/while was a way to ensure
      interrupts were only disabled for short periods of time while the bulk
      of the time interrupts were free to occur.  The use of the spin lock
      has eliminated the need to play with interrupts in this way while
      still allowing for IO to be protected.
      
      The remaining 3 sti() calls seem unneeded now that at no other point
      in the driver is there a call to cli().
      Signed-off-by: default avatarMark Asselstine <mark.asselstine@windriver.com>
      Acked-by: default avatarKarsten Keil <kkeil@suse.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a9dd7fe2
    • Mike Frysinger's avatar
      atm: Cleanup atm_tcp.h and atm.h for userspace. · a1a61a43
      Mike Frysinger authored
      The atm_tcp.h uses types from linux/atm.h, but does not include it.
      It should also use the standard __u## types from linux/types.h rather
      than the uint##_t types since the former can be found with the kernel
      already.
      
      Same goes for linux/atm.h.  The linux/socket.h include there also gets
      dropped as atm.h does not actually use anything from socket.h.
      Signed-off-by: default avatarMike Frysinger <vapier@gentoo.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a1a61a43
    • Stephen Hemminger's avatar
      bonding: handle case of device named bonding_master · 38d2f38b
      Stephen Hemminger authored
      If device already exists named bonding_masters, then fail. This is a wierd
      corner case only a QA group could love.
      Signed-off-by: default avatarStephen Hemminger <shemminger@vyatta.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      38d2f38b
    • Stephen Hemminger's avatar
      sysfs: remove error messages for -EEXIST case · 0599ad53
      Stephen Hemminger authored
      It is possible that the entry in sysfs already exists, one case of this is
      when a network device is renamed to bonding_masters. Anyway, in this case
      the proper error path is for device_rename to return an error code, not to
      generate bogus backtrace and errors.
      
      Also, to avoid possible races, the create link should be done before the
      remove link. This makes a device rename atomic operation like other renames.
      Signed-off-by: default avatarStephen Hemminger <shemminger@vyatta.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0599ad53
    • Stephen Hemminger's avatar
      net: handle errors from device_rename · dcc99773
      Stephen Hemminger authored
      device_rename can fail with -EEXIST or -ENOMEM, so handle any
      problems.
      Signed-off-by: default avatarStephen Hemminger <shemminger@vyatta.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      dcc99773
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs · 8f40f672
      Linus Torvalds authored
      * 'for-linus' of ssh://master.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs:
        9p: fix error path during early mount
        9p: make cryptic unknown error from server less scary
        9p: fix flags length in net
        9p: Correct fidpool creation failure in p9_client_create
        9p: use struct mutex instead of struct semaphore
        9p: propagate parse_option changes to client and transports
        fs/9p/v9fs.c (v9fs_parse_options): Handle kstrdup and match_strdup failure.
        9p: Documentation updates
        add match_strlcpy() us it to make v9fs make uname and remotename parsing more robust
      8f40f672
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 · 8978a318
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6:
        sparc64: Use a TS_RESTORE_SIGMASK
        lmb: Make lmb debugging more useful.
        lmb: Fix inconsistent alignment of size argument.
        sparc: Fix mremap address range validation.
      8978a318
    • Andrew Morton's avatar
      net/irda/irnet/irnet_irda.c needs unaligned.h · f7fd63c0
      Andrew Morton authored
      net/irda/irnet/irnet_irda.c: In function 'irnet_discovery_indication':
      net/irda/irnet/irnet_irda.c:1676: error: implicit declaration of function 'get_unaligned'
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Acked-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      f7fd63c0
    • Andrew Morton's avatar
      tty_check_change(): avoid taking tasklist_lock while holding tty->ctrl_lock · 9ffee4cb
      Andrew Morton authored
      May 11 09:42:27 [kernel] [ 1104.496819] rarian-sk-get-c[5630]: segfault at 0 ip 7f478556caf0 sp 7fff8e3fe338 error 4 in libc-2.6.1.so[7f47854f9000+136000]
      May 11 10:59:48 [kernel] [ 2494.165792]
      May 11 10:59:48 [kernel] [ 2494.165794] =======================================================
      May 11 10:59:48 [kernel] [ 2494.165801] [ INFO: possible circular locking dependency detected ]
      May 11 10:59:48 [kernel] [ 2494.165805] 2.6.26-rc1-00007-g91b3a7a #217
      May 11 10:59:48 [kernel] [ 2494.165807] -------------------------------------------------------
      May 11 10:59:48 [kernel] [ 2494.165809] less/7053 is trying to acquire lock:
      May 11 10:59:48 [kernel] [ 2494.165812]  (tasklist_lock){..??}, at: [<ffffffff80232e95>] is_current_pgrp_orphaned+0x15/0x50
      May 11 10:59:48 [kernel] [ 2494.165821]
      May 11 10:59:48 [kernel] [ 2494.165822] but task is already holding lock:
      May 11 10:59:48 [kernel] [ 2494.165824]  (&tty->ctrl_lock){....}, at: [<ffffffff803d5f31>] tty_check_change+0x61/0x110
      May 11 10:59:48 [kernel] [ 2494.165831]
      May 11 10:59:48 [kernel] [ 2494.165832] which lock already depends on the new lock.
      May 11 10:59:48 [kernel] [ 2494.165833]
      May 11 10:59:48 [kernel] [ 2494.165835]
      May 11 10:59:48 [kernel] [ 2494.165836] the existing dependency chain (in reverse order) is:
      May 11 10:59:48 [kernel] [ 2494.165838]
      May 11 10:59:48 [kernel] [ 2494.165839] -> #2 (&tty->ctrl_lock){....}:
      May 11 10:59:48 [kernel] [ 2494.165843]        [<ffffffff80253796>] __lock_acquire+0xf86/0x1080
      May 11 10:59:48 [kernel] [ 2494.165851]        [<ffffffff80253922>] lock_acquire+0x92/0xc0
      May 11 10:59:48 [kernel] [ 2494.165858]        [<ffffffff804deee0>] _spin_lock_irqsave+0x40/0x60
      May 11 10:59:48 [kernel] [ 2494.165866]        [<ffffffff803d31b5>] __proc_set_tty+0x35/0xe0
      May 11 10:59:48 [kernel] [ 2494.165873]        [<ffffffff803d76d4>] tty_ioctl+0xbf4/0xfe0
      May 11 10:59:48 [kernel] [ 2494.165880]        [<ffffffff802a05e1>] vfs_ioctl+0x31/0x90
      May 11 10:59:48 [kernel] [ 2494.165888]        [<ffffffff802a06b3>] do_vfs_ioctl+0x73/0x2d0
      May 11 10:59:48 [kernel] [ 2494.165895]        [<ffffffff802a095a>] sys_ioctl+0x4a/0x80
      May 11 10:59:48 [kernel] [ 2494.165902]        [<ffffffff8020b5ab>] system_call_after_swapgs+0x7b/0x80
      May 11 10:59:48 [kernel] [ 2494.165910]        [<ffffffffffffffff>] 0xffffffffffffffff
      May 11 10:59:48 [kernel] [ 2494.165924]
      May 11 10:59:48 [kernel] [ 2494.165925] -> #1 (&sighand->siglock){++..}:
      May 11 10:59:48 [kernel] [ 2494.165929]        [<ffffffff80253796>] __lock_acquire+0xf86/0x1080
      May 11 10:59:48 [kernel] [ 2494.165936]        [<ffffffff80253922>] lock_acquire+0x92/0xc0
      May 11 10:59:48 [kernel] [ 2494.165943]        [<ffffffff804dec1f>] _spin_lock+0x2f/0x40
      May 11 10:59:48 [kernel] [ 2494.165951]        [<ffffffff8022d5a3>] copy_process+0x973/0x1210
      May 11 10:59:48 [kernel] [ 2494.165959]        [<ffffffff8022df12>] do_fork+0x82/0x2f0
      May 11 10:59:48 [kernel] [ 2494.165967]        [<ffffffff8020bfe1>] kernel_thread+0x81/0xde
      May 11 10:59:48 [kernel] [ 2494.165974]        [<ffffffff8020c048>] child_rip+0xa/0x12
      May 11 10:59:48 [kernel] [ 2494.165981]        [<ffffffffffffffff>] 0xffffffffffffffff
      May 11 10:59:48 [kernel] [ 2494.166038]
      May 11 10:59:48 [kernel] [ 2494.166039] -> #0 (tasklist_lock){..??}:
      May 11 10:59:48 [kernel] [ 2494.166043]        [<ffffffff802535ab>] __lock_acquire+0xd9b/0x1080
      May 11 10:59:48 [kernel] [ 2494.166050]        [<ffffffff80253922>] lock_acquire+0x92/0xc0
      May 11 10:59:48 [kernel] [ 2494.166057]        [<ffffffff804dede2>] _read_lock+0x32/0x50
      May 11 10:59:48 [kernel] [ 2494.166063]        [<ffffffff80232e95>] is_current_pgrp_orphaned+0x15/0x50
      May 11 10:59:48 [kernel] [ 2494.166071]        [<ffffffff803d5f80>] tty_check_change+0xb0/0x110
      May 11 10:59:48 [kernel] [ 2494.166078]        [<ffffffff803dac5f>] set_termios+0x1f/0x4c0
      May 11 10:59:48 [kernel] [ 2494.166085]        [<ffffffff803db379>] tty_mode_ioctl+0x279/0x3e0
      May 11 10:59:48 [kernel] [ 2494.166092]        [<ffffffff803db51d>] n_tty_ioctl+0x3d/0x260
      May 11 10:59:48 [kernel] [ 2494.166100]        [<ffffffff803d6c34>] tty_ioctl+0x154/0xfe0
      May 11 10:59:48 [kernel] [ 2494.166107]        [<ffffffff802a05e1>] vfs_ioctl+0x31/0x90
      May 11 10:59:48 [kernel] [ 2494.166114]        [<ffffffff802a06b3>] do_vfs_ioctl+0x73/0x2d0
      May 11 10:59:48 [kernel] [ 2494.166121]        [<ffffffff802a095a>] sys_ioctl+0x4a/0x80
      May 11 10:59:48 [kernel] [ 2494.166128]        [<ffffffff8020b5ab>] system_call_after_swapgs+0x7b/0x80
      May 11 10:59:48 [kernel] [ 2494.166135]        [<ffffffffffffffff>] 0xffffffffffffffff
      May 11 10:59:48 [kernel] [ 2494.166142]
      May 11 10:59:48 [kernel] [ 2494.166143] other info that might help us debug this:
      May 11 10:59:48 [kernel] [ 2494.166144]
      May 11 10:59:48 [kernel] [ 2494.166146] 1 lock held by less/7053:
      May 11 10:59:48 [kernel] [ 2494.166148]  #0:  (&tty->ctrl_lock){....}, at: [<ffffffff803d5f31>] tty_check_change+0x61/0x110
      May 11 10:59:48 [kernel] [ 2494.166155]
      May 11 10:59:48 [kernel] [ 2494.166156] stack backtrace:
      May 11 10:59:48 [kernel] [ 2494.166159] Pid: 7053, comm: less Not tainted 2.6.26-rc1-00007-g91b3a7a #217
      May 11 10:59:48 [kernel] [ 2494.166161]
      May 11 10:59:48 [kernel] [ 2494.166162] Call Trace:
      May 11 10:59:48 [kernel] [ 2494.166168]  [<ffffffff80251223>] print_circular_bug_tail+0x83/0x90
      May 11 10:59:48 [kernel] [ 2494.166172]  [<ffffffff80250889>] ? print_circular_bug_entry+0x49/0x60
      May 11 10:59:48 [kernel] [ 2494.166178]  [<ffffffff802535ab>] __lock_acquire+0xd9b/0x1080
      May 11 10:59:48 [kernel] [ 2494.166184]  [<ffffffff80232e95>] ? is_current_pgrp_orphaned+0x15/0x50
      May 11 10:59:48 [kernel] [ 2494.166189]  [<ffffffff80253922>] lock_acquire+0x92/0xc0
      May 11 10:59:48 [kernel] [ 2494.166206]  [<ffffffff803d5f80>] tty_check_change+0xb0/0x110
      May 11 10:59:48 [kernel] [ 2494.166211]  [<ffffffff803dac5f>] set_termios+0x1f/0x4c0
      May 11 10:59:48 [kernel] [ 2494.166216]  [<ffffffff803d3423>] ? tty_ldisc_try+0x23/0x60
      May 11 10:59:48 [kernel] [ 2494.166220]  [<ffffffff803d3444>] ? tty_ldisc_try+0x44/0x60
      May 11 10:59:48 [kernel] [ 2494.166224]  [<ffffffff804df2c5>] ? _spin_unlock_irqrestore+0x65/0x80
      May 11 10:59:48 [kernel] [ 2494.166230]  [<ffffffff803db379>] tty_mode_ioctl+0x279/0x3e0
      May 11 10:59:48 [kernel] [ 2494.166234]  [<ffffffff803d3444>] ? tty_ldisc_try+0x44/0x60
      May 11 10:59:48 [kernel] [ 2494.166239]  [<ffffffff803db51d>] n_tty_ioctl+0x3d/0x260
      May 11 10:59:48 [kernel] [ 2494.166244]  [<ffffffff803d6c34>] tty_ioctl+0x154/0xfe0
      May 11 10:59:48 [kernel] [ 2494.166249]  [<ffffffff80252baa>] ? __lock_acquire+0x39a/0x1080
      May 11 10:59:48 [kernel] [ 2494.166256]  [<ffffffff80252baa>] ? __lock_acquire+0x39a/0x1080
      May 11 10:59:48 [kernel] [ 2494.166263]  [<ffffffff80252baa>] ? __lock_acquire+0x39a/0x1080
      May 11 10:59:48 [kernel] [ 2494.166269]  [<ffffffff802a05e1>] vfs_ioctl+0x31/0x90
      May 11 10:59:48 [kernel] [ 2494.166274]  [<ffffffff802a06b3>] do_vfs_ioctl+0x73/0x2d0
      May 11 10:59:48 [kernel] [ 2494.166280]  [<ffffffff802a095a>] sys_ioctl+0x4a/0x80
      May 11 10:59:48 [kernel] [ 2494.166286]  [<ffffffff8020b5ab>] system_call_after_swapgs+0x7b/0x80
      May 11 10:59:48 [kernel] [ 2494.166292]
      Acked-by: default avatarAlan Cox <alan@lxorguk.ukuu.org.uk>
      Reported-by: default avatarMarcin Slusarz <marcin.slusarz@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      9ffee4cb
    • Neil Brown's avatar
      Remove blkdev warning triggered by using md · e7e72bf6
      Neil Brown authored
      As setting and clearing queue flags now requires that we hold a spinlock
      on the queue, and as blk_queue_stack_limits is called without that lock,
      get the lock inside blk_queue_stack_limits.
      
      For blk_queue_stack_limits to be able to find the right lock, each md
      personality needs to set q->queue_lock to point to the appropriate lock.
      Those personalities which didn't previously use a spin_lock, us
      q->__queue_lock.  So always initialise that lock when allocated.
      
      With this in place, setting/clearing of the QUEUE_FLAG_PLUGGED bit will no
      longer cause warnings as it will be clear that the proper lock is held.
      
      Thanks to Dan Williams for review and fixing the silly bugs.
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      Cc: Dan Williams <dan.j.williams@intel.com>
      Cc: Jens Axboe <jens.axboe@oracle.com>
      Cc: Alistair John Strachan <alistair@devzero.co.uk>
      Cc: Nick Piggin <npiggin@suse.de>
      Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
      Cc: Jacek Luczak <difrost.kernel@gmail.com>
      Cc: Prakash Punnoor <prakash@punnoor.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      e7e72bf6
    • Jiri Slaby's avatar
      char: select fw_loader by moxa · 4920916f
      Jiri Slaby authored
      Select FW_LOADER since moxa needs it, otherwise we face link problems such
      as:
      
      drivers/built-in.o: In function
      moxa_pci_probe':moxa.c:(.devinit.text+0x76d8): undefined reference to
      request_firmware'
      :moxa.c:(.devinit.text+0x7e6e): undefined reference to release_firmware'
      make: *** [.tmp_vmlinux1] Error 1
      Reported-by: default avatarPhilippe Roussel <p.o.roussel@free.fr>
      Signed-off-by: default avatarJiri Slaby <jirislaby@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      4920916f
    • Heiko Carstens's avatar
      memory_hotplug: always initialize pageblock bitmap · 76cdd58e
      Heiko Carstens authored
      Trying to online a new memory section that was added via memory hotplug
      sometimes results in crashes when the new pages are added via __free_page.
       Reason for that is that the pageblock bitmap isn't initialized and hence
      contains random stuff.  That means that get_pageblock_migratetype()
      returns also random stuff and therefore
      
      	list_add(&page->lru,
      		&zone->free_area[order].free_list[migratetype]);
      
      in __free_one_page() tries to do a list_add to something that isn't even
      necessarily a list.
      
      This happens since 86051ca5 ("mm: fix
      usemap initialization") which makes sure that the pageblock bitmap gets
      only initialized for pages present in a zone.  Unfortunately for hot-added
      memory the zones "grow" after the memmap and the pageblock memmap have
      been initialized.  Which means that the new pages have an unitialized
      bitmap.  To solve this the calls to grow_zone_span() and grow_pgdat_span()
      are moved to __add_zone() just before the initialization happens.
      
      The patch also moves the two functions since __add_zone() is the only
      caller and I didn't want to add a forward declaration.
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      Cc: Andy Whitcroft <apw@shadowen.org>
      Cc: Dave Hansen <haveblue@us.ibm.com>
      Cc: Gerald Schaefer <gerald.schaefer@de.ibm.com>
      Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Cc: Yasunori Goto <y-goto@jp.fujitsu.com>
      Cc: <stable@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      76cdd58e
    • Venki Pallipadi's avatar
      mprotect: prevent alteration of the PAT bits · 1c12c4cf
      Venki Pallipadi authored
      There is a defect in mprotect, which lets the user change the page cache
      type bits by-passing the kernel reserve_memtype and free_memtype
      wrappers.  Fix the problem by not letting mprotect change the PAT bits.
      Signed-off-by: default avatarVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Signed-off-by: default avatarSuresh Siddha <suresh.b.siddha@intel.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarHugh Dickins <hugh@veritas.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      1c12c4cf
    • Eric Dumazet's avatar
      per_cpu: fix DEFINE_PER_CPU_SHARED_ALIGNED for modules · 44c81433
      Eric Dumazet authored
      Current module loader lookups ".data.percpu" ELF section to perform
      per_cpu relocation.  But DEFINE_PER_CPU_SHARED_ALIGNED() uses another
      section (".data.percpu.shared_aligned"), currently only handled in
      vmlinux.lds, not by module loader.
      
      To correct this problem, instead of adding logic into module loader, or
      using at build time a module.lds file for all arches to group
      ".data.percpu.shared_aligned" into ".data.percpu", just use ".data.percpu"
      for modules.
      
      Alignment requirements are correctly handled by ld and module loader.
      Signed-off-by: default avatarEric Dumazet <dada1@cosmosbay.com>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: Fenghua Yu <fenghua.yu@intel.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      44c81433
    • Geoff Levand's avatar
      memory_hotplug: check for walk_memory_resource() failure in online_pages() · fd8a4221
      Geoff Levand authored
      Add a check to online_pages() to test for failure of
      walk_memory_resource().  This fixes a condition where a failure
      of walk_memory_resource() can lead to online_pages() returning
      success without the requested pages being onlined.
      Signed-off-by: default avatarGeoff Levand <geoffrey.levand@am.sony.com>
      Cc: Yasunori Goto <y-goto@jp.fujitsu.com>
      Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Cc: Dave Hansen <haveblue@us.ibm.com>
      Cc: Keith Mannthey <kmannth@us.ibm.com>
      Cc: Christoph Lameter <clameter@sgi.com>
      Cc: Paul Jackson <pj@sgi.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      fd8a4221
    • Harvey Harrison's avatar
      lib: create common ascii hex array · 3fc95772
      Harvey Harrison authored
      Add a common hex array in hexdump.c so everyone can use it.
      
      Add a common hi/lo helper to avoid the shifting masking that is
      done to get the upper and lower nibbles of a byte value.
      
      Pull the pack_hex_byte helper from kgdb as it is opencoded many
      places in the tree that will be consolidated.
      Signed-off-by: default avatarHarvey Harrison <harvey.harrison@gmail.com>
      Acked-by: default avatarPaul Mundt <lethal@linux-sh.org>
      Cc: Jason Wessel <jason.wessel@windriver.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      3fc95772