01 Oct, 2009

1 commit

  • This provides safety against negative optlen at the type
    level instead of depending upon (sometimes non-trivial)
    checks against this sprinkled all over the the place, in
    each and every implementation.

    Based upon work done by Arjan van de Ven and feedback
    from Linus Torvalds.

    Signed-off-by: David S. Miller

    David S. Miller
     

17 Sep, 2009

7 commits

  • iucv_sock_recvmsg() and iucv_process_message()/iucv_fragment_skb race
    for dequeuing an skb from the backlog queue.

    If iucv_sock_recvmsg() dequeues first, iucv_process_message() calls
    sock_queue_rcv_skb() with an skb that is NULL.

    This results in the following kernel panic:

    Unable to handle kernel pointer dereference at virtual kernel address (null)
    Oops: 0004 [#1] PREEMPT SMP DEBUG_PAGEALLOC
    Modules linked in: af_iucv sunrpc qeth_l3 dm_multipath dm_mod vmur qeth ccwgroup
    CPU: 0 Not tainted 2.6.30 #4
    Process client-iucv (pid: 4787, task: 0000000034e75940, ksp: 00000000353e3710)
    Krnl PSW : 0704000180000000 000000000043ebca (sock_queue_rcv_skb+0x7a/0x138)
    R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:0 AS:0 CC:0 PM:0 EA:3
    Krnl GPRS: 0052900000000000 000003e0016e0fe8 0000000000000000 0000000000000000
    000000000043eba8 0000000000000002 0000000000000001 00000000341aa7f0
    0000000000000000 0000000000007800 0000000000000000 0000000000000000
    00000000341aa7f0 0000000000594650 000000000043eba8 000000003fc2fb28
    Krnl Code: 000000000043ebbe: a7840006 brc 8,43ebca
    000000000043ebc2: 5930c23c c %r3,572(%r12)
    000000000043ebc6: a724004c brc 2,43ec5e
    >000000000043ebca: e3c0b0100024 stg %r12,16(%r11)
    000000000043ebd0: a7190000 lghi %r1,0
    000000000043ebd4: e310b0200024 stg %r1,32(%r11)
    000000000043ebda: c010ffffdce9 larl %r1,43a5ac
    000000000043ebe0: e310b0800024 stg %r1,128(%r11)
    Call Trace:
    ([] sock_queue_rcv_skb+0x58/0x138)
    [] iucv_process_message+0x112/0x3cc [af_iucv]
    [] iucv_callback_rx+0x1f0/0x274 [af_iucv]
    [] iucv_message_pending+0xa2/0x120
    [] iucv_tasklet_fn+0x176/0x1b8
    [] tasklet_action+0xfe/0x1f4
    [] __do_softirq+0x116/0x284
    [] do_softirq+0xe4/0xe8
    [] irq_exit+0xba/0xd8
    [] do_extint+0x146/0x190
    [] ext_no_vtime+0x1e/0x22
    [] kfree+0x202/0x28c
    ([] kfree+0x1f8/0x28c)
    [] __kfree_skb+0x32/0x124
    [] iucv_sock_recvmsg+0x236/0x41c [af_iucv]
    [] sock_aio_read+0x136/0x160
    [] do_sync_read+0xe4/0x13c
    [] vfs_read+0x152/0x15c
    [] SyS_read+0x54/0xac
    [] sysc_noemu+0x10/0x16
    [] 0x42ff8def3c

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

    Hendrik Brueckner
     
  • For non-accepted sockets on the accept queue, iucv_sock_kill()
    is called twice (in iucv_sock_close() and iucv_sock_cleanup_listen()).
    This typically results in a kernel oops as shown below.

    Remove the duplicate call to iucv_sock_kill() and set the SOCK_ZAPPED
    flag in iucv_sock_close() only.

    The iucv_sock_kill() function frees a socket only if the socket is zapped
    and orphaned (sk->sk_socket == NULL):
    - Non-accepted sockets are always orphaned and, thus, iucv_sock_kill()
    frees the socket twice.
    - For accepted sockets or sockets created with iucv_sock_create(),
    sk->sk_socket is initialized. This caused the first call to
    iucv_sock_kill() to return immediately. To free these sockets,
    iucv_sock_release() uses sock_orphan() before calling iucv_sock_kill().

    Unable to handle kernel pointer dereference at virtual kernel address 000000003edd3000
    Oops: 0011 [#1] PREEMPT SMP DEBUG_PAGEALLOC
    Modules linked in: af_iucv sunrpc qeth_l3 dm_multipath dm_mod qeth vmur ccwgroup
    CPU: 0 Not tainted 2.6.30 #4
    Process iucv_sock_close (pid: 2486, task: 000000003aea4340, ksp: 000000003b75bc68)
    Krnl PSW : 0704200180000000 000003e00168e23a (iucv_sock_kill+0x2e/0xcc [af_iucv])
    R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:0 AS:0 CC:2 PM:0 EA:3
    Krnl GPRS: 0000000000000000 000000003b75c000 000000003edd37f0 0000000000000001
    000003e00168ec62 000000003988d960 0000000000000000 000003e0016b0608
    000000003fe81b20 000000003839bb58 00000000399977f0 000000003edd37f0
    000003e00168b000 000003e00168f138 000000003b75bcd0 000000003b75bc98
    Krnl Code: 000003e00168e22a: c0c0ffffe6eb larl %r12,3e00168b000
    000003e00168e230: b90400b2 lgr %r11,%r2
    000003e00168e234: e3e0f0980024 stg %r14,152(%r15)
    >000003e00168e23a: e310225e0090 llgc %r1,606(%r2)
    000003e00168e240: a7110001 tmll %r1,1
    000003e00168e244: a7840007 brc 8,3e00168e252
    000003e00168e248: d507d00023c8 clc 0(8,%r13),968(%r2)
    000003e00168e24e: a7840009 brc 8,3e00168e260
    Call Trace:
    ([] afiucv_dbf+0x0/0xfffffffffffdea20 [af_iucv])
    [] iucv_sock_close+0x130/0x368 [af_iucv]
    [] iucv_sock_release+0x5e/0xe4 [af_iucv]
    [] sock_release+0x44/0x104
    [] sock_close+0x32/0x50
    [] __fput+0xf4/0x250
    [] filp_close+0x7a/0xa8
    [] SyS_close+0xe2/0x148
    [] sysc_noemu+0x10/0x16
    [] 0x42ff8deeac

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

    Hendrik Brueckner
     
  • After resuming from suspend, all af_iucv sockets are disconnected.
    Ensure that iucv_accept_dequeue() can handle disconnected sockets
    which are not yet accepted.

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

    Hendrik Brueckner
     
  • 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
     

15 Sep, 2009

1 commit


10 Jul, 2009

1 commit

  • Adding memory barrier after the poll_wait function, paired with
    receive callbacks. Adding fuctions sock_poll_wait and sk_has_sleeper
    to wrap the memory barrier.

    Without the memory barrier, following race can happen.
    The race fires, when following code paths meet, and the tp->rcv_nxt
    and __add_wait_queue updates stay in CPU caches.

    CPU1 CPU2

    sys_select receive packet
    ... ...
    __add_wait_queue update tp->rcv_nxt
    ... ...
    tp->rcv_nxt check sock_def_readable
    ... {
    schedule ...
    if (sk->sk_sleep && waitqueue_active(sk->sk_sleep))
    wake_up_interruptible(sk->sk_sleep)
    ...
    }

    If there was no cache the code would work ok, since the wait_queue and
    rcv_nxt are opposit to each other.

    Meaning that once tp->rcv_nxt is updated by CPU2, the CPU1 either already
    passed the tp->rcv_nxt check and sleeps, or will get the new value for
    tp->rcv_nxt and will return with new data mask.
    In both cases the process (CPU1) is being added to the wait queue, so the
    waitqueue_active (CPU2) call cannot miss and will wake up CPU1.

    The bad case is when the __add_wait_queue changes done by CPU1 stay in its
    cache, and so does the tp->rcv_nxt update on CPU2 side. The CPU1 will then
    endup calling schedule and sleep forever if there are no more data on the
    socket.

    Calls to poll_wait in following modules were ommited:
    net/bluetooth/af_bluetooth.c
    net/irda/af_irda.c
    net/irda/irnet/irnet_ppp.c
    net/mac80211/rc80211_pid_debugfs.c
    net/phonet/socket.c
    net/rds/af_rds.c
    net/rfkill/core.c
    net/sunrpc/cache.c
    net/sunrpc/rpc_pipe.c
    net/tipc/socket.c

    Signed-off-by: Jiri Olsa
    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Jiri Olsa
     

23 Jun, 2009

1 commit

  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (43 commits)
    via-velocity: Fix velocity driver unmapping incorrect size.
    mlx4_en: Remove redundant refill code on RX
    mlx4_en: Removed redundant check on lso header size
    mlx4_en: Cancel port_up check in transmit function
    mlx4_en: using stop/start_all_queues
    mlx4_en: Removed redundant skb->len check
    mlx4_en: Counting all the dropped packets on the TX side
    usbnet cdc_subset: fix issues talking to PXA gadgets
    Net: qla3xxx, remove sleeping in atomic
    ipv4: fix NULL pointer + success return in route lookup path
    isdn: clean up documentation index
    cfg80211: validate station settings
    cfg80211: allow setting station parameters in mesh
    cfg80211: allow adding/deleting stations on mesh
    ath5k: fix beacon_int handling
    MAINTAINERS: Fix Atheros pattern paths
    ath9k: restore PS mode, before we put the chip into FULL SLEEP state.
    ath9k: wait for beacon frame along with CAB
    acer-wmi: fix rfkill conversion
    ath5k: avoid PCI FATAL interrupts by restoring RETRY_TIMEOUT disabling
    ...

    Linus Torvalds
     

19 Jun, 2009

2 commits

  • If the iucv message limit for a communication path is exceeded,
    sendmsg() returns -EAGAIN instead of -EPIPE.
    The calling application can then handle this error situtation,
    e.g. to try again after waiting some time.

    For blocking sockets, sendmsg() waits up to the socket timeout
    before returning -EAGAIN. For the new wait condition, a macro
    has been introduced and the iucv_sock_wait_state() has been
    refactored to this macro.

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

    Hendrik Brueckner
     
  • Change the if condition to exit sendmsg() if the socket in not connected.

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

    Hendrik Brueckner
     

16 Jun, 2009

3 commits

  • Patch establishes a dummy afiucv-device to make sure af_iucv is
    notified as iucv-bus device about suspend/resume.

    The PM freeze callback severs all iucv pathes of connected af_iucv sockets.
    The PM thaw/restore callback switches the state of all previously connected
    sockets to IUCV_DISCONN.

    Signed-off-by: Ursula Braun
    Signed-off-by: Martin Schwidefsky

    Ursula Braun
     
  • Patch calls the PM callback functions of iucv-bus devices, which are
    responsible for removal of their established iucv pathes.

    The PM freeze callback for the first iucv-bus device disables all iucv
    interrupts except the connection severed interrupt.
    The PM freeze callback for the last iucv-bus device shuts down iucv.

    The PM thaw callback for the first iucv-bus device re-enables iucv
    if it has been shut down during freeze. If freezing has been interrupted,
    it re-enables iucv interrupts according to the needs of iucv-exploiters.

    The PM restore callback for the first iucv-bus device re-enables iucv.

    Signed-off-by: Ursula Braun
    Signed-off-by: Martin Schwidefsky

    Ursula Braun
     
  • To guarantee a proper cleanup, patch adds a reboot notifier to
    the iucv base code, which disables iucv interrupts, shuts down
    established iucv pathes, and removes iucv declarations for z/VM.

    Checks have to be added to the iucv-API functions, whether
    iucv-buffers removed at reboot time are still declared.

    Signed-off-by: Ursula Braun
    Signed-off-by: Martin Schwidefsky

    Ursula Braun
     

23 Apr, 2009

10 commits

  • From: Ursula Braun

    net/iucv/af_iucv.c in net-next-2.6 is almost correct. 4 lines should
    still be deleted. These are the remaining changes:

    Signed-off-by: David S. Miller

    Ursula Braun
     
  • Conflicts:
    net/iucv/af_iucv.c

    David S. Miller
     
  • The SO_MSGLIMIT socket option modifies the message limit for new
    IUCV communication paths.

    The message limit specifies the maximum number of outstanding messages
    that are allowed for connections. This setting can be lowered by z/VM
    when an IUCV connection is established.

    Expects an integer value in the range of 1 to 65535.
    The default value is 65535.

    The message limit must be set before calling connect() or listen()
    for sockets.

    If sockets are already connected or in state listen, changing the message
    limit is not supported.
    For reading the message limit value, unconnected sockets return the limit
    that has been set or the default limit. For connected sockets, the actual
    message limit is returned. The actual message limit is assigned by z/VM
    for each connection and it depends on IUCV MSGLIMIT authorizations
    specified for the z/VM guest virtual machine.

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

    Hendrik Brueckner
     
  • If the skb cannot be copied to user iovec, always return -EFAULT.
    The skb is enqueued again, except MSG_PEEK flag is set, to allow user space
    applications to correct its iovec pointer.

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

    Hendrik Brueckner
     
  • This patch provides the socket type SOCK_SEQPACKET in addition to
    SOCK_STREAM.

    AF_IUCV sockets of type SOCK_SEQPACKET supports an 1:1 mapping of
    socket read or write operations to complete IUCV messages.
    Socket data or IUCV message data is not fragmented as this is the
    case for SOCK_STREAM sockets.

    The intention is to help application developers who write
    applications or device drivers using native IUCV interfaces
    (Linux kernel or z/VM IUCV interfaces).

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

    Hendrik Brueckner
     
  • Allow 'classification' of socket data that is sent or received over
    an af_iucv socket. For classification of data, the target class of an
    (native) iucv message is used.

    This patch provides the cmsg interface for iucv_sock_recvmsg() and
    iucv_sock_sendmsg(). Applications can use the msg_control field of
    struct msghdr to set or get the target class as a
    "socket control message" (SCM/CMSG).

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

    Hendrik Brueckner
     
  • The patch allows to send and receive data in the parameter list of an
    iucv message.
    The parameter list is an arry of 8 bytes that are used by af_iucv as
    follows:
    0..6 7 bytes for socket data and
    7 1 byte to store the data length.

    Instead of storing the data length directly, the difference
    between 0xFF and the data length is used.
    This convention does not interfere with the existing use of PRM
    messages for shutting down the send direction of an AF_IUCV socket
    (shutdown() operation). Data lenghts greater than 7 (or PRM message
    byte 8 is less than 0xF8) denotes to special messages.
    Currently, the special SEND_SHUTDOWN message is supported only.

    To use IPRM messages, both communicators must set the IUCV_IPRMDATA
    flag during path negotiation, i.e. in iucv_connect() and
    path_pending().

    To be compatible to older af_iucv implementations, sending PRM
    messages is controlled by the socket option SO_IPRMDATA_MSG.
    Receiving PRM messages does not depend on the socket option (but
    requires the IUCV_IPRMDATA path flag to be set).

    Sending/Receiving data in the parameter list improves performance for
    small amounts of data by reducing message_completion() interrupts and
    memory copy operations.

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

    Hendrik Brueckner
     
  • Provide the socket operations getsocktopt() and setsockopt() to enable/disable
    sending of data in the parameter list of IUCV messages.
    The patch sets respective flag only.

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

    Hendrik Brueckner
     
  • If the af_iucv communication partner quiesces the path to shutdown its
    receive direction, provide a quiesce callback implementation to shutdown
    the (local) send direction. This ensures that both sides are synchronized.

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

    Hendrik Brueckner
     
  • Some of the IUCV commands can be invoked in interrupt context.
    Those commands need a different per-cpu IUCV command parameter block,
    otherwise they might overwrite an IUCV command parameter of a not yet
    finished IUCV command invocation in process context.

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

    Ursula Braun
     

22 Apr, 2009

5 commits


27 Feb, 2009

1 commit


07 Jan, 2009

1 commit


06 Jan, 2009

4 commits

  • If the iucv module is compiled in/loaded but no user is registered cpu
    hot remove doesn't work. Reason for that is that the iucv cpu hotplug
    notifier on CPU_DOWN_PREPARE checks if the iucv_buffer_cpumask would
    be empty after the corresponding bit would be cleared. However the bit
    was never set since iucv wasn't enable. That causes all cpu hot unplug
    operations to fail in this scenario.
    To fix this use iucv_path_table as an indicator wether iucv is enabled
    or not.

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

    Heiko Carstens
     
  • Free iucv path after iucv_path_sever() calls in iucv_callback_connreq()
    (path_pending() iucv callback).
    If iucv_path_accept() fails, free path and free/kill newly created socket.

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

    Hendrik Brueckner
     
  • For certain types of AFIUCV socket connect failures IUCV connections
    are left over. Add some cleanup-statements to avoid cluttered IUCV
    connections.

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

    Ursula Braun
     
  • If the iucv_path_connect() call fails then return an error code that
    corresponds to the iucv_path_connect() failure condition; instead of
    returning -ECONNREFUSED for any failure.

    This helps to improve error handling for user space applications
    (e.g. inform the user that the z/VM guest is not authorized to
    connect to other guest virtual machines).

    The error return codes are based on those described in connect(2).

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

    Hendrik Brueckner
     

25 Dec, 2008

2 commits


30 Sep, 2008

1 commit

  • fb65a7c091529bfffb1262515252c0d0f6241c5c ("iucv: Fix bad merging.") fixed
    a merge error, but in a wrong way. We now end up with the bug below.
    This patch corrects the mismerge like it was intended.

    BUG: scheduling while atomic: swapper/1/0x00000000
    Modules linked in:
    CPU: 1 Not tainted 2.6.27-rc7-00094-gc0f4d6d #9
    Process swapper (pid: 1, task: 000000003fe7d988, ksp: 000000003fe838c0)
    0000000000000000 000000003fe839b8 0000000000000002 0000000000000000
    000000003fe83a58 000000003fe839d0 000000003fe839d0 0000000000390de6
    000000000058acd8 00000000000000d0 000000003fe7dcd8 0000000000000000
    000000000000000c 000000000000000d 0000000000000000 000000003fe83a28
    000000000039c5b8 0000000000015e5e 000000003fe839b8 000000003fe83a00
    Call Trace:
    ([] show_trace+0xe6/0x134)
    [] __schedule_bug+0xa2/0xa8
    [] schedule+0x49c/0x910
    [] schedule_timeout+0xc4/0x114
    [] wait_for_common+0xe8/0x1b4
    [] call_usermodehelper_exec+0xa6/0xec
    [] kobject_uevent_env+0x418/0x438
    [] bus_add_driver+0x1e4/0x298
    [] driver_register+0x90/0x18c
    [] netiucv_init+0x168/0x2c8
    [] do_one_initcall+0x3e/0x17c
    [] kernel_init+0x1ce/0x248
    [] kernel_thread_starter+0x6/0xc
    [] kernel_thread_starter+0x0/0xc
    iucv: NETIUCV driver initialized
    initcall netiucv_init+0x0/0x2c8 returned with preemption imbalance

    Signed-off-by: Heiko Carstens
    Signed-off-by: David S. Miller

    Heiko Carstens