From patchwork Sat Dec 13 19:17:50 2008 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Ilpo_J=C3=A4rvinen?= X-Patchwork-Id: 13839 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.176.167]) by ozlabs.org (Postfix) with ESMTP id 1493ADDFD2 for ; Sun, 14 Dec 2008 06:18:42 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751957AbYLMTSU (ORCPT ); Sat, 13 Dec 2008 14:18:20 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751687AbYLMTSI (ORCPT ); Sat, 13 Dec 2008 14:18:08 -0500 Received: from courier.cs.helsinki.fi ([128.214.9.1]:41228 "EHLO mail.cs.helsinki.fi" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751323AbYLMTR5 (ORCPT ); Sat, 13 Dec 2008 14:17:57 -0500 Received: from wrl-59.cs.helsinki.fi (wrl-59.cs.helsinki.fi [128.214.166.179]) (AUTH: PLAIN cs-relay, TLS: TLSv1/SSLv3,256bits,AES256-SHA) by mail.cs.helsinki.fi with esmtp; Sat, 13 Dec 2008 21:17:52 +0200 id 0008C29E.49440A60.000044B8 Received: by wrl-59.cs.helsinki.fi (Postfix, from userid 50795) id 2934EA00AE; Sat, 13 Dec 2008 21:17:52 +0200 (EET) From: "=?ISO-8859-1?Q?Ilpo_J=E4rvinen?=" To: David Miller Cc: netdev@vger.kernel.org Subject: [PATCH 10/11] nf/dccp: merge errorpaths Date: Sat, 13 Dec 2008 21:17:50 +0200 Message-Id: <12291958721873-git-send-email-ilpo.jarvinen@helsinki.fi> X-Mailer: git-send-email 1.5.2.2 In-Reply-To: <12291958721188-git-send-email-ilpo.jarvinen@helsinki.fi> References: <12291958711278-git-send-email-ilpo.jarvinen@helsinki.fi> <1229195871718-git-send-email-ilpo.jarvinen@helsinki.fi> <12291958711089-git-send-email-ilpo.jarvinen@helsinki.fi> <12291958711225-git-send-email-ilpo.jarvinen@helsinki.fi> <12291958713600-git-send-email-ilpo.jarvinen@helsinki.fi> <12291958712305-git-send-email-ilpo.jarvinen@helsinki.fi> <12291958712963-git-send-email-ilpo.jarvinen@helsinki.fi> <1229195872202-git-send-email-ilpo.jarvinen@helsinki.fi> <12291958721148-git-send-email-ilpo.jarvinen@helsinki.fi> <12291958721188-git-send-email-ilpo.jarvinen@helsinki.fi> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Signed-off-by: Ilpo Järvinen Cc: Patrick McHardy --- net/netfilter/xt_dccp.c | 16 +++++++++------- 1 files changed, 9 insertions(+), 7 deletions(-) diff --git a/net/netfilter/xt_dccp.c b/net/netfilter/xt_dccp.c index e5d3e86..0989f29 100644 --- a/net/netfilter/xt_dccp.c +++ b/net/netfilter/xt_dccp.c @@ -45,10 +45,8 @@ dccp_find_option(u_int8_t option, unsigned int optlen = dh->dccph_doff*4 - __dccp_hdr_len(dh); unsigned int i; - if (dh->dccph_doff * 4 < __dccp_hdr_len(dh)) { - *hotdrop = true; - return false; - } + if (dh->dccph_doff * 4 < __dccp_hdr_len(dh)) + goto invalid; if (!optlen) return false; @@ -57,9 +55,7 @@ dccp_find_option(u_int8_t option, op = skb_header_pointer(skb, protoff + optoff, optlen, dccp_optbuf); if (op == NULL) { /* If we don't have the whole header, drop packet. */ - spin_unlock_bh(&dccp_buflock); - *hotdrop = true; - return false; + goto partial; } for (i = 0; i < optlen; ) { @@ -76,6 +72,12 @@ dccp_find_option(u_int8_t option, spin_unlock_bh(&dccp_buflock); return false; + +partial: + spin_unlock_bh(&dccp_buflock); +invalid: + *hotdrop = true; + return false; }