25 May, 2011

3 commits

  • libfcoe's interface consists of create, destroy, enable,
    disable and create_vn2vn. These are currently module
    paramaters added durring the module initialization. A
    concern arose that the module parameters were being added
    with write permissions before the module had completed
    initialization. The following code was added to each
    sysfs store file.

    * Make sure the module has been initialized, and is not about to be
    * removed. Module parameter sysfs files are writable before the
    * module_init function is called and after module_exit.
    */
    if (THIS_MODULE->state != MODULE_STATE_LIVE)
    goto out_nodev;

    This check was called out as unhelpful as the module can
    go dead at any time and therefore its state isn't a reliable
    thing to look at as a sign of stability and initialization
    completion. Also, that functional interfaces like these
    should be added after module initialization.

    This patch removes the unnecessary checks and hopes to
    disprove the concern about initialization ordering.

    Recent fcoe transport rework changes now require fcoe
    transports to register with libfcoe before any operation
    can take place. libfcoe may access some static variables
    but nothing that could cause a problem. Once a fcoe transport
    is registered, libfcoe is usable and any interface calls will
    be functional.

    Signed-off-by: Robert Love
    Tested-by: Ross Brattain
    Signed-off-by: James Bottomley

    Robert Love
     
  • This patch adds a validation step before allowing creation of a new NPIV port.
    It checks whether the WWPN passed for the new NPIV port to be created is unique
    for the given physical port.

    Signed-off-by: Neerav Parikh
    Tested-by: Ross Brattain
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Neerav Parikh
     
  • Host doesnt handle CVL to NPIV instantiated ports correctly.
    - As per FC-BB-5 Rev 2 CVLs with no VN_Port descriptors shall be treated as
    implicit logout of ALL vn_ports.
    - CVL for NPIV ports should be handled before physical port even if descriptor
    for physical port appears before NPIV ports

    Signed-off-by: Bhanu Prakash Gollapudi
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Bhanu Prakash Gollapudi
     

21 May, 2011

1 commit

  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1446 commits)
    macvlan: fix panic if lowerdev in a bond
    tg3: Add braces around 5906 workaround.
    tg3: Fix NETIF_F_LOOPBACK error
    macvlan: remove one synchronize_rcu() call
    networking: NET_CLS_ROUTE4 depends on INET
    irda: Fix error propagation in ircomm_lmp_connect_response()
    irda: Kill set but unused variable 'bytes' in irlan_check_command_param()
    irda: Kill set but unused variable 'clen' in ircomm_connect_indication()
    rxrpc: Fix set but unused variable 'usage' in rxrpc_get_transport()
    be2net: Kill set but unused variable 'req' in lancer_fw_download()
    irda: Kill set but unused vars 'saddr' and 'daddr' in irlan_provider_connect_indication()
    atl1c: atl1c_resume() is only used when CONFIG_PM_SLEEP is defined.
    rxrpc: Fix set but unused variable 'usage' in rxrpc_get_peer().
    rxrpc: Kill set but unused variable 'local' in rxrpc_UDP_error_handler()
    rxrpc: Kill set but unused variable 'sp' in rxrpc_process_connection()
    rxrpc: Kill set but unused variable 'sp' in rxrpc_rotate_tx_window()
    pkt_sched: Kill set but unused variable 'protocol' in tc_classify()
    isdn: capi: Use pr_debug() instead of ifdefs.
    tg3: Update version to 3.119
    tg3: Apply rx_discards fix to 5719/5720
    ...

    Fix up trivial conflicts in arch/x86/Kconfig and net/mac80211/agg-tx.c
    as per Davem.

    Linus Torvalds
     

01 May, 2011

8 commits

  • Currently fcoe interface cleanup is done after ndo_fcoe_disable
    and that prevents logoff going out to the peer, so this patch
    moves all netdev cleanup and its releasing inside
    fcoe_interface_cleanup to have log off before ndo_fcoe_disable
    disables the fcoe.

    This patch also fixes asymmetric rtnl locking around fcoe_if_destroy,
    as currently this function requires rtnl held by its caller
    and then have this func drops the lock, instead now don't have
    any processing under rtnl inside fcoe_if_destroy, this required
    moving few func to get build working again.

    Signed-off-by: Vasu Dev
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Vasu Dev
     
  • fix typo of '_attach' -> '_detach' in the comment.

    Reported-by: Frank Zhang
    Signed-off-by: Yi Zou
    Tested-by: Ross Brattain
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Yi Zou
     
  • possible buffer overflow in fcoe_transport_show when reaching the end of
    buffer and crossing PAGE_SIZE boundary.

    Signed-off-by: Yi Zou
    Signed-off-by: Tomas Henzl
    Tested-by: Ross Brattain
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Yi Zou
     
  • When rmmoving the underlying fcoe transport driver module by force when
    it's attached and in use, the correspoding netdev mapping should be
    cleaned up properly as well, otherwise the lookup for a given netdev
    for the transport would still return non NULL pointer, causing "unable
    to handle paging request" bug.

    Signed-off-by: Yi Zou
    Tested-by: Ross Brattain
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Yi Zou
     
  • Signed-off-by: Kirill A. Shutemov
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Kirill A. Shutemov
     
  • The check of module state being MODULE_STATE_LIVE is no longer needed for the
    individual fcoe transport driver, e.g., fcoe.ko, as sysfs entries now go to
    libfcoe now, if it reaches fcoe.ko, it has to be already registered. The module
    state check for libfcoe will guard the possible race condition of sysfs being
    writable before module_init function is called and after module_exit.

    Signed-off-by: Yi Zou
    Tested-by: Ross Brattain
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Yi Zou
     
  • These checks were initially added to avoid a lockdep
    false positive when dealing with the s_active, rtnl
    and fcoe_config_mutex mutexes. Recently the create,
    destroy, enable and disable sysfs entries were moved
    from fcoe.ko to libfcoe.ko. With this change the mutex
    usage was shuffled around and the lockdep false
    positive stopped happening. We can now remove these
    checks.

    Signed-off-by: Robert Love
    Tested-by: Ross Brattain
    Signed-off-by: James Bottomley

    Robert Love
     
  • This code was incorrectly ported from fcoe.c when the
    fcoe transport infrastructure was put into place. It
    was originally needed in fcoe.c when dealing with
    the rtnl mutex. In that code it was only needed to
    avoid a lockdep false positive. In libfcoe we don't
    deal with the rtnl mutex, we don't get the lockdep
    false positive and therefore we don't need these
    checks.

    Signed-off-by: Robert Love
    Tested-by: Ross Brattain
    Signed-off-by: James Bottomley

    Robert Love
     

30 Apr, 2011

1 commit

  • This makes sure that when a driver calls the ethtool's
    get/set_settings() callback of another driver, the data passed to it
    is clean. This guarantees that speed_hi will be zeroed correctly if
    the called callback doesn't explicitely set it: we are sure we don't
    get a corrupted speed from the underlying driver. We also take care of
    setting the cmd field appropriately (ETHTOOL_GSET/SSET).

    This applies to dev_ethtool_get_settings(), which now makes sure it
    sets up that ethtool command parameter correctly before passing it to
    drivers. This also means that whoever calls dev_ethtool_get_settings()
    does not have to clean the ethtool command parameter. This function
    also becomes an exported symbol instead of an inline.

    All drivers visible to make allyesconfig under x86_64 have been
    updated.

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

    David Decotigny
     

31 Mar, 2011

1 commit


18 Mar, 2011

1 commit

  • * git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (170 commits)
    [SCSI] scsi_dh_rdac: Add MD36xxf into device list
    [SCSI] scsi_debug: add consecutive medium errors
    [SCSI] libsas: fix ata list corruption issue
    [SCSI] hpsa: export resettable host attribute
    [SCSI] hpsa: move device attributes to avoid forward declarations
    [SCSI] scsi_debug: Logical Block Provisioning (SBC3r26)
    [SCSI] sd: Logical Block Provisioning update
    [SCSI] Include protection operation in SCSI command trace
    [SCSI] hpsa: fix incorrect PCI IDs and add two new ones (2nd try)
    [SCSI] target: Fix volume size misreporting for volumes > 2TB
    [SCSI] bnx2fc: Broadcom FCoE offload driver
    [SCSI] fcoe: fix broken fcoe interface reset
    [SCSI] fcoe: precedence bug in fcoe_filter_frames()
    [SCSI] libfcoe: Remove stale fcoe-netdev entries
    [SCSI] libfcoe: Move FCOE_MTU definition from fcoe.h to libfcoe.h
    [SCSI] libfc: introduce __fc_fill_fc_hdr that accepts fc_hdr as an argument
    [SCSI] fcoe, libfc: initialize EM anchors list and then update npiv EMs
    [SCSI] Revert "[SCSI] libfc: fix exchange being deleted when the abort itself is timed out"
    [SCSI] libfc: Fixing a memory leak when destroying an interface
    [SCSI] megaraid_sas: Version and Changelog update
    ...

    Fix up trivial conflicts due to whitespace differences in
    drivers/scsi/libsas/{sas_ata.c,sas_scsi_host.c}

    Linus Torvalds
     

15 Mar, 2011

1 commit


01 Mar, 2011

5 commits

  • Reset using "fcoeadm -r" also needs to restart FIP before
    doing libfc lport reset, this is needed for new switch firmware
    requiring FIP solicitation before doing FLOGI again during reset.
    So this patch does this by doing fcoe_ctlr_link_down and then
    fcoe_ctlr_link_up to reset the interface.

    The fcoe_ctlr_link_down call path also does lport reset
    and then fcoe_ctlr_link_up re-starts the fabric login after
    doing FIP solicitation first to get reset feature working
    again.

    Signed-off-by: Vasu Dev
    Tested-by: Ross Brattain
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Vasu Dev
     
  • Negate has higher precedence than bitwise AND. FCPHF_CRC_UNCHECKED is
    0x1 so the original code is equivalent to: if (!fr_flags(fp)) { ...

    Signed-off-by: Dan Carpenter
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Dan Carpenter
     
  • When L2 driver is unloaded, libfcoe_destroy tries to access the fcoe
    transport structure matching the netdev. However, since the netdev is
    unregistered by that time, it fails to do so. Hence the stale mappings
    exists in the fcoe-netdev list. Handle NETDEV_UREGISTER device
    notification mechanism to remove the stale fcoe-netdev mapping.

    Signed-off-by: Bhanu Prakash Gollapudi
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Bhanu Prakash Gollapudi
     
  • both fcoe and bnx2fc drivers can access the common definition of
    FCOE_MTU.

    Signed-off-by: Bhanu Prakash Gollapudi
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Bhanu Prakash Gollapudi
     
  • EM anchors list initialization for only master port was not enough to
    keep npiv working as described here:-
    https://lists.open-fcoe.org/pipermail/devel/2011-January/011063.html

    So this patch moves fc_exch_mgr_list_clone to update npiv ports
    EMs once EM anchors list initialized.

    Also some cleanup, no need to set lport = NULL as that always
    get initialized later.

    Signed-off-by: Vasu Dev
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Vasu Dev
     

13 Feb, 2011

10 commits

  • To facilitate LLDDs to reuse the code, skb queue related functions are moved to
    libfcoe, so that both fcoe and bnx2fc drivers can use them. The common structures
    fcoe_port, fcoe_percpu_s are moved to libfcoe. fcoe_port will now have an
    opaque pointer that points to corresponding driver's interface structure.
    Also, fcoe_start_io and fcoe_fc_crc are moved to libfcoe.

    As part of this change, fixed fcoe_start_io to return ENOMEM if
    skb_clone fails.

    Signed-off-by: Bhanu Prakash Gollapudi
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Bhanu Prakash Gollapudi
     
  • fcoe uses the system_wq to destroy ports and the work items need to be
    flushed before the driver is unloaded. As the work items free the
    containing data structure, they can't be flushed directly. The
    workqueue should be flushed instead.

    Also, the destruction works can be chained - ie. destruction of a port
    may lead to destruction of another port where the work item for the
    former queues the work for the latter. Currently, the depth of chain
    can be at most two and fcoe_exit() makes sure everything is complete
    by calling flush_scheduled_work() twice.

    With commit c8efcc25 (workqueue: allow chained queueing during
    destruction), destroy_workqueue() can take care of chained works on
    workqueue destruction. Add and use fcoe_wq instead. Simply
    destroying fcoe_wq on driver unload takes care of flushing.

    Signed-off-by: Tejun Heo
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Tejun Heo
     
  • Remove the existing sysfs entry points of the fcoe.ko module parameters that
    are used to create/destroy/enable/disable an FCoE instance, rather, use the
    newly added fcoe transport code to attach itself as an FCoE transport provider
    when fcoe.ko gets loaded. There is no functionality change on the logic of
    fcoe interacts with upper libfc and lower netdev. The fcoe transport only acts
    as thin layer to provide a unified interface for all fcoe transport providers
    so all FCoE instances on any network interfaces from all vendors can be
    managed through the same Open-FCoE.org's user space tool package, which also
    has full DCB support.

    Signed-off-by: Yi Zou
    Signed-off-by: Bhanu Prakash Gollapudi
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Yi Zou
     
  • Prepare the fcoe to convert it to use the newly added fcoe transport, making
    it as the default fcoe transport provider for libfcoe. This patch is to rename
    some of the variables to avoid any confusing names later as now there are
    several transports in the same file.

    Signed-off-by: Yi Zou
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Yi Zou
     
  • Now we can include the fcoe_transport.c to the build of the kernel libfcoe
    module. Move the module information to fcoe_transport, and it will have
    all the module parameters later for the create/destroy/enable/disable of an
    FCoE instance.

    Signed-off-by: Yi Zou
    Signed-off-by: Bhanu Prakash Gollapudi
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Yi Zou
     
  • The existing libfcoe.c is mostly for FIP support, rename it to reflect that
    fact and so we can add fcoe_transport.c to the make file to include both
    into the libfcoe kernel module.

    [ Minor modifications by Robert Love converting a few
    "__attribute__((packed))" modifiers to "__packed" to remove new
    checkpatch.pl WARNINGS ]

    Signed-off-by: Yi Zou
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Yi Zou
     
  • Add the new fcoe_transport.c file that implements basic fcoe transport
    interface. Eventually, the sysfs entries to create/destroy/enable/disable
    an FCoE instance will be coming to the fcoe transport layer, who does a
    look-up to find the corresponding transport provide and pass the corresponding
    action over to the identified provider.

    The fcoe.ko will become the default fcoe transport provider that can support
    FCoE on any given netdev interfaces, as the Open-FCoE.org's default software
    FCoE HBA solution. Any vendor specific FCoE HBA driver that is built on top
    of Open-FCoE's kernel stack of libfc & libfcoe as well as the user land tool
    of fcoe-utils can easily plug-in and start running FCoE on their network
    interfaces. The fcoe.ko will be converted to act as the default provider if
    no vendor specific transport provider is found, as it is always added to the
    very end of the list of attached transports.

    Signed-off-by: Yi Zou
    Signed-off-by: Bhanu Prakash Gollapudi
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Yi Zou
     
  • libfcoe kernel module debug macros will used by the fcoe transport code
    as well when later it gets added.

    Signed-off-by: Yi Zou
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Yi Zou
     
  • Allowing FCoE LOGO followed by CVL in this case prevents
    FIP login back to the FCF and then keeps lport offline,
    only FIP LOGO and CLV needs to be processed while in
    FIP mode, therefore this patch drops FCoE LOGO in FIP mode.

    Added fcoe_filter_frames() to filter out above mentioned LOGO
    in fcoe rx path along with other existing filtering in code
    for bad CRC frames. Adding separate fcoe_filter_frames function
    helped with better code indentations and if needed then same
    will allow adding more filters at one place in future.

    This LOGO drop is added after FCP frames passed up to avoid
    any additional checks on fast path for this.

    Signed-off-by: Vasu Dev
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Vasu Dev
     
  • vports are not grabbing module references but are
    releasing them. This causes the module reference count
    to decrement too many times and it wraps around past 0.

    The solution is to do a module_put() in
    fcoe_interface_release() so that the reference is only
    released when the fcoe_interface is released. There is a
    one-to-one relationship between the N_Port and the
    fcoe_interface, so the module reference will only be
    dropped when the N_Port is destroyed

    To create symetry in the code this patch moves the
    try_module_get() call into fcoe_interface_create(). This
    means that only the N_Port will grab a reference to the
    module when its corresponding fcoe_interface is created.

    This patch also makes it so that the fcoe_interface_create()
    routine encodes any error codes in the fcoe_interface
    pointer returned. This way its caller, fcoe_create(), can
    return an accurate error code.

    Signed-off-by: Robert Love
    Tested-by: Ross Brattain
    Signed-off-by: James Bottomley

    Robert Love
     

22 Dec, 2010

9 commits

  • Neaten several calls to fip_select() by having it return the
    pointer to the new FCF.

    Signed-off-by: Joe Eykholt
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Joe Eykholt
     
  • When there are several FCFs to choose from, the one most likely
    to accept a FLOGI on certian switches is the one that last
    answered a multicast solicit.

    So, when receiving an advertisement, move the FCF to the front
    of the list so that it gets chosen first among those with the
    same priority.

    Without this, more FLOGIs need to be sent in a test with
    multiple FCFs and a switch in NPV mode, but it still
    eventually finds one that accepts the FLOGI.

    Signed-off-by: Joe Eykholt
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Joe Eykholt
     
  • When multiple FCFs to the same fabric exist, the debug messages
    all look alike. Change the message to include the MAC address.

    Signed-off-by: Joe Eykholt
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Joe Eykholt
     
  • Switches using multiple-FCFs may reject FLOGI in order to
    balance the load between multiple FCFs. Even though the FCF
    was available, it may have more load at the point we actually
    send the FLOGI.

    If the FLOGI fails, select a different FCF
    if possible, among those with the same priority. If no other
    FCF is available, just deliver the reject to libfc for retry.

    Signed-off-by: Joe Eykholt
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Joe Eykholt
     
  • The check for conflicting fabrics in fcoe_ctlr_select()
    ignores any FCFs that aren't usable. This is a minor
    problem now but becomes more pronounced after later patches.

    Signed-off-by: Joe Eykholt
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Joe Eykholt
     
  • Move some of the code in fcoe_ctlr_timer_work() to
    fcoe_ctlr_select() so that it can be shared
    with another function in a forthcoming patch.

    Signed-off-by: Joe Eykholt
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Joe Eykholt
     
  • Move the announcement code to a separate function for reuse in
    a forthcoming patch.

    For messages regarding FCF timeout and selection, use the
    previously-announced FCF MAC address (dest_addr) in the fcoe_ctlr struct.
    Only print (announce) the FCF if it is new. Print MAC for
    timed-out or deselected FCFs.

    Signed-off-by: Joe Eykholt
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Joe Eykholt
     
  • Add missing newlines.

    Signed-off-by: Joe Perches
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Joe Perches
     
  • This happens when then tearing down the fcoe interface with active I/O.
    The back trace shows dead000000200200 in RAX, i.e., LIST_POISON2, indicating
    that the fsp is already being dequeued, which is probably why no complaining
    was seen in fc_fcp_destroy() about outstanding fsp not freed, since we dequeue
    it in the end of fc_io_compl() before releasing it. The bug is due to the
    fact that we have already destroyed lport's scsi_pkt_pool while on-going i/o
    is still accessing it through fc_fcp_pkt_release(), like this trace or the
    similar code path from scsi-ml to fc_eh_abort, etc. This is fixed by moving
    the fc_fcp_destroy() after lport is detached from scsi-ml since fc_fcp_destroy
    is supposed to called only once where no lport lock is taken, otherwise the
    fc_fcp_pkt_release() would have to grab the lport lock.

    BUG: unable to handle kernel NULL pointer dereference at (null)
    .......
    RIP: 0010:[]
    [] (null)
    RSP: 0018:ffff8803270f7b88 EFLAGS: 00010282
    RAX: dead000000200200 RBX: ffff880197d2fbc0 RCX: 0000000000005908
    RDX: ffff880195ea6d08 RSI: 0000000000000282 RDI: ffff880180f4fec0
    RBP: ffff8803270f7bc0 R08: ffff880197d2fbe0 R09: 0000000000000000
    R10: ffff88032867f090 R11: 0000000000000000 R12: ffff880195ea6d08
    R13: 0000000000000282 R14: ffff880180f4fec0 R15: 0000000000000000
    FS: 0000000000000000(0000) GS:ffff8801b5820000(0000) knlGS:0000000000000000
    CS: 0010 DS: 0018 ES: 0018 CR0: 000000008005003b
    CR2: 0000000000000000 CR3: 00000001a6eae000 CR4: 00000000000006e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
    Process fc_rport_eq (pid: 5278, threadinfo ffff8803270f6000, task ffff880326254ab0)
    Stack:
    ffffffffa02c39ca ffff8803270f7ba0 ffff88019331cbc0 ffff880197d2fbc0
    0000000000000000 ffff8801a8c895e0 ffff8801a8c895e0 ffff8803270f7c10
    ffffffffa02c4962 ffff8803270f7be0 ffffffff814c94ab ffff8803270f7c10
    Call Trace:
    [] ? fc_io_compl+0x10a/0x530 [libfc]
    [] fc_fcp_complete_locked+0x72/0x150 [libfc]
    [] ? _spin_unlock_bh+0x1b/0x20
    [] ? fc_exch_done+0x3f/0x60 [libfc]
    [] fc_fcp_retry_cmd+0x4f/0x60 [libfc]
    [] fc_fcp_recv+0x9b0/0xc30 [libfc]
    [] ? _call_console_drivers+0x4a/0x80
    [] ? lock_timer_base+0x3c/0x70
    [] ? try_to_del_timer_sync+0x7b/0xe0
    [] fc_exch_mgr_reset+0x1df/0x250 [libfc]
    [] ? fc_fcp_recv+0x0/0xc30 [libfc]
    [] fc_rport_work+0xf2/0x4e0 [libfc]
    [] ? prepare_to_wait+0x4e/0x80
    [] ? fc_rport_work+0x0/0x4e0 [libfc]
    [] worker_thread+0x170/0x2a0
    [] ? autoremove_wake_function+0x0/0x40
    [] ? worker_thread+0x0/0x2a0
    [] kthread+0x96/0xa0
    [] child_rip+0xa/0x20
    [] ? kthread+0x0/0xa0
    [] ? child_rip+0x0/0x20
    Code:
    Bad RIP value.

    RIP
    [] (null)
    RSP
    CR2: 0000000000000000

    Signed-off-by: Yi Zou
    Signed-off-by: Robert Love
    Signed-off-by: James Bottomley

    Yi Zou