From 5bac144254e49cd28d971ad5ecd809fcc5d0004f Mon Sep 17 00:00:00 2001 From: hselasky Date: Mon, 3 Feb 2020 10:47:44 +0000 Subject: [PATCH] MFC r356633: Make sure the VNET is properly set when reaping mbufs in ipoib. Else the following panic may happen: panic() icmp_error() ipoib_cm_mb_reap() linux_work_fn() taskqueue_run_locked() taskqueue_thread_loop() fork_exit() fork_trampoline() Submitted by: Andreas Kempe Sponsored by: Mellanox Technologies git-svn-id: svn://svn.freebsd.org/base/stable/10@357429 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f --- sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c b/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c index 7ba90d1bd..03f903723 100644 --- a/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c +++ b/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c @@ -1259,6 +1259,8 @@ static void ipoib_cm_mb_reap(struct work_struct *work) spin_lock_irqsave(&priv->lock, flags); + CURVNET_SET_QUIET(priv->dev->if_vnet); + for (;;) { IF_DEQUEUE(&priv->cm.mb_queue, mb); if (mb == NULL) @@ -1285,6 +1287,8 @@ static void ipoib_cm_mb_reap(struct work_struct *work) spin_lock_irqsave(&priv->lock, flags); } + CURVNET_RESTORE(); + spin_unlock_irqrestore(&priv->lock, flags); } -- 2.42.0