Commit ae13366b authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull rdma fixes from Jason Gunthorpe:
 "Fix a few more of the usual sorts of bugs:

   - Another regression with source route validation in CMA, introduced
     this merge window

   - Crash in hfi1 due to faulty list operations

   - PCI ID updates for EFA

   - Disable LOCAL_INV in hns because it causes a HW hang

   - Crash in hns due to missing initialization

   - Memory leak in rxe

   - Missing error unwind during ib_core module loading

   - Missing error handling in qedr around work queue creation during
     startup"

* tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma:
  RDMA/qedr: clean up work queue on failure in qedr_alloc_resources()
  RDMA/core: Fix null-ptr-deref in ib_core_cleanup()
  RDMA/rxe: Fix mr leak in RESPST_ERR_RNR
  RDMA/hns: Fix NULL pointer problem in free_mr_init()
  RDMA/hns: Disable local invalidate operation
  RDMA/efa: Add EFA 0xefa2 PCI ID
  IB/hfi1: Correctly move list in sc_disable()
  RDMA/cma: Use output interface for net_dev check
parents 8f71a2b3 7a47e077
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1556,7 +1556,7 @@ static bool validate_ipv4_net_dev(struct net_device *net_dev,
		return false;

	memset(&fl4, 0, sizeof(fl4));
	fl4.flowi4_iif = net_dev->ifindex;
	fl4.flowi4_oif = net_dev->ifindex;
	fl4.daddr = daddr;
	fl4.saddr = saddr;

+9 −1
Original line number Diff line number Diff line
@@ -2815,10 +2815,18 @@ static int __init ib_core_init(void)

	nldev_init();
	rdma_nl_register(RDMA_NL_LS, ibnl_ls_cb_table);
	roce_gid_mgmt_init();
	ret = roce_gid_mgmt_init();
	if (ret) {
		pr_warn("Couldn't init RoCE GID management\n");
		goto err_parent;
	}

	return 0;

err_parent:
	rdma_nl_unregister(RDMA_NL_LS);
	nldev_exit();
	unregister_pernet_device(&rdma_dev_net_ops);
err_compat:
	unregister_blocking_lsm_notifier(&ibdev_lsm_nb);
err_sa:
+1 −1
Original line number Diff line number Diff line
@@ -2537,7 +2537,7 @@ void __init nldev_init(void)
	rdma_nl_register(RDMA_NL_NLDEV, nldev_cb_table);
}

void __exit nldev_exit(void)
void nldev_exit(void)
{
	rdma_nl_unregister(RDMA_NL_NLDEV);
}
+3 −1
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
/*
 * Copyright 2018-2021 Amazon.com, Inc. or its affiliates. All rights reserved.
 * Copyright 2018-2022 Amazon.com, Inc. or its affiliates. All rights reserved.
 */

#include <linux/module.h>
@@ -14,10 +14,12 @@

#define PCI_DEV_ID_EFA0_VF 0xefa0
#define PCI_DEV_ID_EFA1_VF 0xefa1
#define PCI_DEV_ID_EFA2_VF 0xefa2

static const struct pci_device_id efa_pci_tbl[] = {
	{ PCI_VDEVICE(AMAZON, PCI_DEV_ID_EFA0_VF) },
	{ PCI_VDEVICE(AMAZON, PCI_DEV_ID_EFA1_VF) },
	{ PCI_VDEVICE(AMAZON, PCI_DEV_ID_EFA2_VF) },
	{ }
};

+1 −2
Original line number Diff line number Diff line
@@ -913,8 +913,7 @@ void sc_disable(struct send_context *sc)
	spin_unlock(&sc->release_lock);

	write_seqlock(&sc->waitlock);
	if (!list_empty(&sc->piowait))
		list_move(&sc->piowait, &wake_list);
	list_splice_init(&sc->piowait, &wake_list);
	write_sequnlock(&sc->waitlock);
	while (!list_empty(&wake_list)) {
		struct iowait *wait;
Loading