1From: Vasiliy Kulikov <segoon@openwall.com> 2Subject: [PATCH] core: dev: don't call BUG() on bad input 3Date: Mon, 14 Feb 2011 13:56:06 +0300 4Lines: 36 5Message-ID: <1297680967-11893-1-git-send-email-segoon@openwall.com> 6Cc: "David S. Miller" <davem@davemloft.net>, 7 Eric Dumazet <eric.dumazet@gmail.com>, 8 Tom Herbert <therbert@google.com>, 9 Changli Gao <xiaosuo@gmail.com>, 10 Jesse Gross <jesse@nicira.com>, netdev@vger.kernel.org 11To: linux-kernel@vger.kernel.org 12X-From: netdev-owner@vger.kernel.org Mon Feb 14 11:56:26 2011 13Return-path: <netdev-owner@vger.kernel.org> 14Envelope-to: linux-netdev-2@lo.gmane.org 15Received: from vger.kernel.org ([209.132.180.67]) 16 by lo.gmane.org with esmtp (Exim 4.69) 17 (envelope-from <netdev-owner@vger.kernel.org>) 18 id 1Pow6Q-0007p5-UJ 19 for linux-netdev-2@lo.gmane.org; Mon, 14 Feb 2011 11:56:23 +0100 20Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand 21 id S1753243Ab1BNK4O (ORCPT <rfc822;linux-netdev-2@m.gmane.org>); 22 Mon, 14 Feb 2011 05:56:14 -0500 23Received: from mail-bw0-f46.google.com ([209.85.214.46]:60909 "EHLO 24 mail-bw0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org 25 with ESMTP id S1752645Ab1BNK4M (ORCPT 26 <rfc822;netdev@vger.kernel.org>); Mon, 14 Feb 2011 05:56:12 -0500 27Received: by bwz15 with SMTP id 15so5332720bwz.19 28 for <multiple recipients>; Mon, 14 Feb 2011 02:56:11 -0800 (PST) 29DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; 30 d=gmail.com; s=gamma; 31 h=domainkey-signature:sender:from:to:cc:subject:date:message-id 32 :x-mailer; 33 bh=YQn7OCqAZuXaSsRtgaQYckH74o43k6Rppt54AR6UzDo=; 34 b=CxfBmTAbcMf7ySl3szqU/hLEMbY7aJ+FjefneMcTm/AmBnyihy20JuV2k0yYJzcIBi 35 9+2npC4H9oJn7/ocVARq88j9ZA/4firOi9ZddgGu6c8+o0tWoZylA1ehtHzzk+4I173l 36 H8guqK5rplkryj6+PStELYYt36SpAVfaL2EdY= 37DomainKey-Signature: a=rsa-sha1; c=nofws; 38 d=gmail.com; s=gamma; 39 h=sender:from:to:cc:subject:date:message-id:x-mailer; 40 b=G0AqVbcip2oFA2IqAQa6TWwQydu/mJFzt98tGkR1fVNl3m+HaKY433gNCR+Dqdv0gA 41 SGL/R3HRiBBBku/GM4x3gQ8SoAFZiREw6PDtkU55l/mk+yS+v+8YTq7/InPxHoHeTWsv 42 pX0mWUI2HtTXKALBiM+nLsnBWtcC8yInYtyeQ= 43Received: by 10.204.61.73 with SMTP id s9mr6247440bkh.185.1297680970948; 44 Mon, 14 Feb 2011 02:56:10 -0800 (PST) 45Received: from localhost (ppp91-77-40-235.pppoe.mtu-net.ru [91.77.40.235]) 46 by mx.google.com with ESMTPS id u23sm1686152bkw.9.2011.02.14.02.56.09 47 (version=TLSv1/SSLv3 cipher=OTHER); 48 Mon, 14 Feb 2011 02:56:10 -0800 (PST) 49X-Mailer: git-send-email 1.7.0.4 50Sender: netdev-owner@vger.kernel.org 51Precedence: bulk 52List-ID: <netdev.vger.kernel.org> 53X-Mailing-List: netdev@vger.kernel.org 54Archived-At: <http://permalink.gmane.org/gmane.linux.kernel/1099668> 55 56alloc_netdev() may be called with too long name (more that IFNAMSIZ bytes). 57Currently this leads to BUG(). Other insane inputs (bad txqs, rxqs) and 58even OOM don't lead to BUG(). Made alloc_netdev() return NULL, like on 59other errors. 60 61Signed-off-by: Vasiliy Kulikov <segoon@openwall.com> 62--- 63 Compile tested. 64 65 net/core/dev.c | 5 ++++- 66 1 files changed, 4 insertions(+), 1 deletions(-) 67 68diff --git a/net/core/dev.c b/net/core/dev.c 69index 6392ea0..12ef4b0 100644 70--- a/net/core/dev.c 71+++ b/net/core/dev.c 72@@ -5761,7 +5761,10 @@ struct net_device *alloc_netdev_mqs(int sizeof_priv, const char *name, 73 size_t alloc_size; 74 struct net_device *p; 75 76- BUG_ON(strlen(name) >= sizeof(dev->name)); 77+ if (strnlen(name, sizeof(dev->name)) >= sizeof(dev->name)) { 78+ pr_err("alloc_netdev: Too long device name \n"); 79+ return NULL; 80+ } 81 82 if (txqs < 1) { 83 pr_err("alloc_netdev: Unable to allocate device " 84-- 851.7.0.4 86 87-- 88To unsubscribe from this list: send the line "unsubscribe netdev" in 89the body of a message to majordomo@vger.kernel.org 90More majordomo info at http://vger.kernel.org/majordomo-info.html 91 92 93 94