Revert "nvme_fc: add module to ops template to allow module references"

Bug #1869947 reported by Jeff Lane 
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
linux (Ubuntu)
Fix Released
High
Jeff Lane 

Bug Description

[IMPACT]
This upstream commit:

863fbae929c7a5b64e96b8a3ffb34a29eefb9f8f
nvme_fc: add module to ops template to allow module references

was pulled into Focal as part of this bug:
https://bugs.launchpad.net/bugs/1860125

and this commit into Focal:
a7441301b20dc8a7772972a092968bb353b7a642

This patch was added to prevent the unloading of lpfc driver when doing NVMe BFS booting. Broadcom has identified that this patch introduces a bug that prevents unloading of lpfc driver in the non-BFS case as well.

Because of this, they have asked that we revert this patch and remove it from our kernel. Additionally, Broadcome have also said that they are working on a patch upstream to revert this as well. As it may not land upstream in time to meet kernel freeze for Focal, I'm providing a patch
to revert this commit directly.

[FIXES]
To resolve, revert the following commit ID in the Focal Tree:
a7441301b20dc8a7772972a092968bb353b7a642
nvme_fc: add module to ops template to allow module references

    BugLink: https://bugs.launchpad.net/bugs/1860125

    [ Upstream commit 863fbae929c7a5b64e96b8a3ffb34a29eefb9f8f ]

    In nvme-fc: it's possible to have connected active controllers
    and as no references are taken on the LLDD, the LLDD can be
    unloaded. The controller would enter a reconnect state and as
    long as the LLDD resumed within the reconnect timeout, the
    controller would resume. But if a namespace on the controller
    is the root device, allowing the driver to unload can be problematic.
    To reload the driver, it may require new io to the boot device,
    and as it's no longer connected we get into a catch-22 that
    eventually fails, and the system locks up.

    Fix this issue by taking a module reference for every connected
    controller (which is what the core layer did to the transport
    module). Reference is cleared when the controller is removed.

    Acked-by: Himanshu Madhani <email address hidden>
    Reviewed-by: Christoph Hellwig <email address hidden>
    Signed-off-by: James Smart <email address hidden>
    Signed-off-by: Keith Busch <email address hidden>
    Signed-off-by: Sasha Levin <email address hidden>
    Signed-off-by: Paolo Pisati <email address hidden>

An updated tree with the commit reverted can be found here:
https://code.launchpad.net/~bladernr/ubuntu/+source/linux/+git/focal/+ref/1869947-revert-lpfc-patch

[REGRESSION RISK]
Regression risk is low as this is a new patch introduced upstream and synced into a development release. The patch only exists in our tree from Ubuntu-5.4-5.4.0-13.16 onwards and does not affect older kernels.

CVE References

Jeff Lane  (bladernr)
Changed in linux (Ubuntu):
status: New → In Progress
importance: Undecided → High
assignee: nobody → Jeff Lane (bladernr)
Jeff Lane  (bladernr)
description: updated
description: updated
Jeff Lane  (bladernr)
summary: - revert patch that introduces bug that prevents lpfc driver unloading
+ nvme_fc patch prevents unloading of lpfc module in both BFS and non-BFS
+ scenarios
description: updated
summary: - nvme_fc patch prevents unloading of lpfc module in both BFS and non-BFS
+ nvme_fc patch prevents unloading lpfs module in both BFS and non-BFS
scenarios
summary: - nvme_fc patch prevents unloading lpfs module in both BFS and non-BFS
- scenarios
+ Revert "nvme_fc: add module to ops template to allow module references"
Jeff Lane  (bladernr)
description: updated
Seth Forshee (sforshee)
Changed in linux (Ubuntu):
status: In Progress → Fix Committed
Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (35.2 KiB)

This bug was fixed in the package linux - 5.4.0-24.28

---------------
linux (5.4.0-24.28) focal; urgency=medium

  * focal/linux: 5.4.0-24.28 -proposed tracker (LP: #1871939)

  * getitimer returns it_value=0 erroneously (LP: #1349028)
    - [Config] CONTEXT_TRACKING_FORCE policy should be unset

  * 12d1:1038 Dual-Role OTG device on non-HNP port - unable to enumerate USB
    device on port 1 (LP: #1047527)
    - [Config] USB_OTG_FSM policy not needed

  * Add DCPD backlight support for HP CML system (LP: #1871589)
    - SAUCE: drm/i915: Force DPCD backlight mode for HP CML 2020 system

  * Backlight brightness cannot be adjusted using keys (LP: #1860303)
    - SAUCE drm/i915: Force DPCD backlight mode for HP Spectre x360 Convertible
      13t-aw100

  * CVE-2020-11494
    - slcan: Don't transmit uninitialized stack data in padding

  * Ubuntu Kernel Support for OpenPOWER NV Secure & Trusted Boot (LP: #1866909)
    - powerpc: Detect the secure boot mode of the system
    - powerpc/ima: Add support to initialize ima policy rules
    - powerpc: Detect the trusted boot state of the system
    - powerpc/ima: Define trusted boot policy
    - ima: Make process_buffer_measurement() generic
    - certs: Add wrapper function to check blacklisted binary hash
    - ima: Check against blacklisted hashes for files with modsig
    - powerpc/ima: Update ima arch policy to check for blacklist
    - powerpc/ima: Indicate kernel modules appended signatures are enforced
    - powerpc/powernv: Add OPAL API interface to access secure variable
    - powerpc: expose secure variables to userspace via sysfs
    - x86/efi: move common keyring handler functions to new file
    - powerpc: Load firmware trusted keys/hashes into kernel keyring
    - x86/efi: remove unused variables

  * [roce-0227]sync mainline kernel 5.6rc3 roce patchset into ubuntu HWE kernel
    branch (LP: #1864950)
    - RDMA/hns: Cleanups of magic numbers
    - RDMA/hns: Optimize eqe buffer allocation flow
    - RDMA/hns: Add the workqueue framework for flush cqe handler
    - RDMA/hns: Delayed flush cqe process with workqueue
    - RDMA/hns: fix spelling mistake: "attatch" -> "attach"
    - RDMA/hns: Initialize all fields of doorbells to zero
    - RDMA/hns: Treat revision HIP08_A as a special case
    - RDMA/hns: Use flush framework for the case in aeq
    - RDMA/hns: Stop doorbell update while qp state error
    - RDMA/hns: Optimize qp destroy flow
    - RDMA/hns: Optimize qp context create and destroy flow
    - RDMA/hns: Optimize qp number assign flow
    - RDMA/hns: Optimize qp buffer allocation flow
    - RDMA/hns: Optimize qp param setup flow
    - RDMA/hns: Optimize kernel qp wrid allocation flow
    - RDMA/hns: Optimize qp doorbell allocation flow
    - RDMA/hns: Check if depth of qp is 0 before configure

  * [hns3-0316]sync mainline kernel 5.6rc4 hns3 patchset into ubuntu HWE kernel
    branch (LP: #1867586)
    - net: hns3: modify an unsuitable print when setting unknown duplex to fibre
    - net: hns3: add enabled TC numbers and DWRR weight info in debugfs
    - net: hns3: add support for dump MAC ID and loopback status in debugfs
    - net: hns3: add missing help info for QS shaper...

Changed in linux (Ubuntu):
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.