From patchwork Mon Jun 27 15:05:00 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jon Mason X-Patchwork-Id: 102190 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 7C268B6F5C for ; Tue, 28 Jun 2011 01:05:21 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751884Ab1F0PFQ (ORCPT ); Mon, 27 Jun 2011 11:05:16 -0400 Received: from mail-pz0-f46.google.com ([209.85.210.46]:45826 "EHLO mail-pz0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751118Ab1F0PFO (ORCPT ); Mon, 27 Jun 2011 11:05:14 -0400 Received: by pzk9 with SMTP id 9so3015778pzk.19 for ; Mon, 27 Jun 2011 08:05:14 -0700 (PDT) Received: by 10.142.66.12 with SMTP id o12mr1255971wfa.128.1309187113845; Mon, 27 Jun 2011 08:05:13 -0700 (PDT) Received: from scylla (cpe-70-113-48-102.austin.res.rr.com [70.113.48.102]) by mx.google.com with ESMTPS id i9sm4368837pbk.68.2011.06.27.08.05.10 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 27 Jun 2011 08:05:12 -0700 (PDT) Received: by scylla (sSMTP sendmail emulation); Mon, 27 Jun 2011 10:05:08 -0500 From: Jon Mason To: davem@davemloft.net Cc: netdev@vger.kernel.org, Andrew Gallatin Subject: [PATCH 1/9] myri10ge: ensure tx queues remain stopped Date: Mon, 27 Jun 2011 10:05:00 -0500 Message-Id: <1309187108-12715-1-git-send-email-mason@myri.com> X-Mailer: git-send-email 1.7.5.4 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Ensure that our tx queues remain stopped when we stop them in myri10ge_close(). Not doing so can potentially lead to traffic being transmitted when the interface is removed, which can lead to NULL pointer dereferences. Signed-off-by: Jon Mason --- drivers/net/myri10ge/myri10ge.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/drivers/net/myri10ge/myri10ge.c b/drivers/net/myri10ge/myri10ge.c index 3ed5f35..a8ae641 100644 --- a/drivers/net/myri10ge/myri10ge.c +++ b/drivers/net/myri10ge/myri10ge.c @@ -1461,7 +1461,8 @@ myri10ge_tx_done(struct myri10ge_slice_state *ss, int mcp_index) /* start the queue if we've stopped it */ if (netif_tx_queue_stopped(dev_queue) && - tx->req - tx->done < (tx->mask >> 1)) { + tx->req - tx->done < (tx->mask >> 1) && + ss->mgp->running == MYRI10GE_ETH_RUNNING) { tx->wake_queue++; netif_tx_wake_queue(dev_queue); }