17 Sep, 2009

14 commits

  • Moving prepare_to_wait before the condition to avoid a race between
    schedule_timeout and wake up.
    The race can appear during iucv_sock_connect() and iucv_callback_connack().

    Signed-off-by: Hendrik Brueckner
    Signed-off-by: Ursula Braun
    Signed-off-by: David S. Miller

    Hendrik Brueckner
     
  • The iucv_query_maxconn() function uses the wrong output register and
    stores the size of the interrupt buffer instead of the maximum number
    of connections.

    According to the QUERY IUCV function, general register 1 contains the
    maximum number of connections.

    If the maximum number of connections is not set properly, the following
    warning is displayed:

    Badness at /usr/src/kernel-source/2.6.30-39.x.20090806/net/iucv/iucv.c:1808
    Modules linked in: netiucv fsm af_iucv sunrpc qeth_l3 dm_multipath dm_mod vmur qeth ccwgroup
    CPU: 0 Tainted: G W 2.6.30 #4
    Process seq (pid: 16925, task: 0000000030e24a40, ksp: 000000003033bd98)
    Krnl PSW : 0404200180000000 000000000053b270 (iucv_external_interrupt+0x64/0x224)
    R:0 T:1 IO:0 EX:0 Key:0 M:1 W:0 P:0 AS:0 CC:2 PM:0 EA:3
    Krnl GPRS: 00000000011279c2 00000000014bdb70 0029000000000000 0000000000000029
    000000000053b236 000000000001dba4 0000000000000000 0000000000859210
    0000000000a67f68 00000000008a6100 000000003f83fb90 0000000000004000
    000000003f8c7bc8 00000000005a2250 000000000053b236 000000003fc2fe08
    Krnl Code: 000000000053b262: e33010000021 clg %r3,0(%r1)
    000000000053b268: a7440010 brc 4,53b288
    000000000053b26c: a7f40001 brc 15,53b26e
    >000000000053b270: c03000184134 larl %r3,8434d8
    000000000053b276: eb220030000c srlg %r2,%r2,48
    000000000053b27c: eb6ff0a00004 lmg %r6,%r15,160(%r15)
    000000000053b282: c0f4fffff6a7 brcl 15,539fd0
    000000000053b288: 4310a003 ic %r1,3(%r10)
    Call Trace:
    ([] iucv_external_interrupt+0x2a/0x224)
    [] do_extint+0x132/0x190
    [] ext_no_vtime+0x1e/0x22
    [] _spin_unlock_irqrestore+0x96/0xa4
    ([] _spin_unlock_irqrestore+0x8c/0xa4)
    [] pipe_write+0x3da/0x5bc
    [] do_sync_write+0xe4/0x13c
    [] vfs_write+0xae/0x15c
    [] SyS_write+0x54/0xac
    [] sysc_noemu+0x10/0x16
    [] 0x42ff8defcc

    Signed-off-by: Hendrik Brueckner
    Signed-off-by: Ursula Braun
    Signed-off-by: David S. Miller

    Hendrik Brueckner
     
  • Prior to calling IUCV functions, the DECLARE BUFFER function must have been
    called for at least one CPU to receive IUCV interrupts.

    With commit "iucv: establish reboot notifier" (6c005961), a check has been
    introduced to avoid calling IUCV functions if the current CPU does not have
    an interrupt buffer declared.
    Because one interrupt buffer is sufficient, change the condition to ensure
    that one interrupt buffer is available.

    In addition, checking the buffer on the current CPU creates a race with
    CPU up/down notifications: before checking the buffer, the IUCV function
    might be interrupted by an smp_call_function() that retrieves the interrupt
    buffer for the current CPU.
    When the IUCV function continues, the check fails and -EIO is returned. If a
    buffer is available on any other CPU, the IUCV function call must be invoked
    (instead of failing with -EIO).

    Signed-off-by: Hendrik Brueckner
    Signed-off-by: Ursula Braun
    Signed-off-by: David S. Miller

    Hendrik Brueckner
     
  • During suspend IUCV exploiters have to close their IUCV connections.
    When restoring an image, it can be checked if all IUCV pathes had
    been closed before the Linux instance was suspended. If not, an
    error message is issued to indicate a problem in one of the
    used programs exploiting IUCV communication.

    Signed-off-by: Ursula Braun
    Signed-off-by: David S. Miller

    Ursula Braun
     
  • David S. Miller
     
  • Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD
    Acked-by: John W. Linville
    Signed-off-by: David S. Miller

    Jean-Christophe PLAGNIOL-VILLARD
     
  • net/core/netpoll.c::netpoll_send_skb() calls the poll handler when
    it is available. As netconsole can be used from almost any context,
    IRQ must not be enabled blindly in the NAPI handler of the driver
    which supports netpoll.

    Call trace:
    netpoll_send_skb()
    {
    local_irq_save(flags)
    -> netpoll_poll()
    -> poll_napi()
    -> poll_one_napi()
    -> napi->poll()
    -> b44_poll()
    local_irq_restore(flags)
    }

    Signed-off-by: Dongdong Deng
    Signed-off-by: David S. Miller

    Dongdong Deng
     
  • RFC4191 says that "If the Reserved (10) value is received, the Route
    Information Option MUST be ignored.", so this patch makes us conform
    to the RFC. This is different to the usage of the Default Router
    Preference, where an invalid value must indeed be treated as
    PREF_MEDIUM.

    Signed-off-by: Jens Rosenboom
    Signed-off-by: David S. Miller

    Jens Rosenboom
     
  • When I was implementing primary_passive option (formely named primary_lazy) I've
    run into troubles with ab_arp. This is the only mode which is not using
    bond_select_active_slave() function to select active slave and instead it
    selects it itself. This seems to be not the right behaviour and it would be
    better to do it in bond_select_active_slave() for all cases. This patch makes
    this happen. Please review.

    Signed-off-by: Jiri Pirko
    Signed-off-by: Jay Vosburgh
    Signed-off-by: David S. Miller

    Jiri Pirko
     
  • David S. Miller
     
  • There's a check saying
    /* we're good if we have both BSSID and channel */
    if (wdev->conn->params.bssid && wdev->conn->params.channel) {

    but that isn't true -- we need the BSS struct. This leads
    to errors such as

    Trying to associate with 00:1b:53:11:dc:40 (SSID='TEST' freq=2412 MHz)
    ioctl[SIOCSIWFREQ]: No such file or directory
    ioctl[SIOCSIWESSID]: No such file or directory
    Association request to the driver failed
    Associated with 00:1b:53:11:dc:40

    in wpa_supplicant, as reported by Holger.

    Instead, we really need to have the BSS struct, and if we
    don't, then we need to initiate a scan for it. But we may
    already have the BSS struct here, so hang on to it if we
    do and scan if we don't.

    Signed-off-by: Johannes Berg
    Tested-by: Holger Schurig
    Signed-off-by: John W. Linville

    Johannes Berg
     
  • The contention window is supposed to be a power of two minus one, i.e.
    15, 31, 63, 127... minstrel_rate_init() forgets to subtract 1, so the
    sequence becomes 15, 32, 66, 134...

    Bug reported by Dan Halperin

    Signed-off-by: Pavel Roskin
    Signed-off-by: John W. Linville

    Pavel Roskin
     
  • Fix printk format warnings:

    drivers/ssb/sdio.c:336: warning: format '%u' expects type 'unsigned int', but argument 7 has type 'size_t'
    drivers/ssb/sdio.c:443: warning: format '%u' expects type 'unsigned int', but argument 7 has type 'size_t'

    Signed-off-by: Randy Dunlap
    Signed-off-by: John W. Linville

    Randy Dunlap
     
  • This patch adds a new usbid for Zcomax XG-705A to the device table.

    Cc: stable@kernel.org
    Reported-by: Jari Jaakola
    Signed-off-by: Christian Lamparter
    Signed-off-by: John W. Linville

    Christian Lamparter
     

16 Sep, 2009

4 commits

  • Use uX rather than uintX_t types for consistency.

    Signed-off-by: David Howells
    Signed-off-by: David S. Miller

    David Howells
     
  • catas_reset() uses pointer to mlx4_priv, but mlx4_priv is not valid
    after call mlx4_restart_one().

    Signed-off-by: Vitaliy Gusev
    Acked-by: Roland Dreier
    Signed-off-by: David S. Miller

    Vitaliy Gusev
     
  • I have recently came across a preemption imbalance detected by:

    huh, entered ffffffff80644630 with preempt_count 00000102, exited with 00000101?
    ------------[ cut here ]------------
    kernel BUG at /usr/src/linux/kernel/timer.c:664!
    invalid opcode: 0000 [1] PREEMPT SMP

    with ffffffff80644630 being inet_twdr_hangman().

    This appeared after I enabled CONFIG_TCP_MD5SIG and played with it a
    bit, so I looked at what might have caused it.

    One thing that struck me as strange is tcp_twsk_destructor(), as it
    calls tcp_put_md5sig_pool() -- which entails a put_cpu(), causing the
    detected imbalance. Found on 2.6.23.9, but 2.6.31 is affected as well,
    as far as I can tell.

    Signed-off-by: Robert Varga
    Signed-off-by: David S. Miller

    Robert Varga
     
  • If qdisc_get_stab returns error in qdisc_create there is skipped qdisc
    ops->destroy, which is necessary because it's after ops->init at the
    moment, so memory leaks are quite probable.

    Signed-off-by: Jarek Poplawski
    Signed-off-by: David S. Miller

    Jarek Poplawski
     

15 Sep, 2009

22 commits