From patchwork Sat Oct 28 00:09:31 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Herbert X-Patchwork-Id: 831554 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=quantonium-net.20150623.gappssmtp.com header.i=@quantonium-net.20150623.gappssmtp.com header.b="tLdUysLE"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yP1NK3wcWz9t4b for ; Sat, 28 Oct 2017 11:10:25 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751654AbdJ1AKV (ORCPT ); Fri, 27 Oct 2017 20:10:21 -0400 Received: from mail-pg0-f65.google.com ([74.125.83.65]:49780 "EHLO mail-pg0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751561AbdJ1AKS (ORCPT ); Fri, 27 Oct 2017 20:10:18 -0400 Received: by mail-pg0-f65.google.com with SMTP id g6so6410379pgn.6 for ; Fri, 27 Oct 2017 17:10:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quantonium-net.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Yt7qSl9goI+Lk0qZT13QCDfY6HlvRnvppPd+geOx7Dc=; b=tLdUysLELzweh1AoHn5EVVbl3Rxlbii2zGfsSeNS1sEawlYQbEfsRTauyKr9QK+q9H yn0Ep04IMJx15yg3z2u81NBfGvGA/Tsy7h0U9j2GPJV4zSfGXBa/YXKXfyDO4bv+Q7gD mSGeE9Vu34RsREJsdXEx0n0o/CHWNpPLUUNBtSk3MGVenS+whGy3sfRSTZ6oNg5tE2Ke qokShu2GJCU88ZKL4eoKEGQqXexQmUtRSdUlFd6Nx/XRASEZVhmPfFLbewiGmI/kdMk3 QFDSTB4hH607ESwgvqBNYaMWCzZiROm9/l52LEmcFUsrUVuphNhEfGU8iaIytUgSVGc8 KofA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Yt7qSl9goI+Lk0qZT13QCDfY6HlvRnvppPd+geOx7Dc=; b=J1pS0zJfIGgsbOFZx+dehkN9JkkwCuFBkY4fWc50KiD6jI/N5LtwFQwZMCaTHhTbH0 KphHvnIBuzO1LXlvKYfiUS0teNt3OHI/WcyeqhFXS7YgYHGbgs6PV81448elNwjc5Fa9 iymr77nF+2z9H/Xzj9PV6QG8/kHGgBJPol4Wyql30GH406xgOvrcIQPD7miv3Bwr9Vz5 zUsWia1+a4mP9/d4n7bVgsIXt/SQ3xiNKPULaoNi9hlD+NxYcrI7zt4fJffyS1qIcPGa 5aDMiScN3j+/9+fAI1WQ7SaiBwMtXgmmDaGxIm9hCi7krNOa4un8idJRabNDcfZCn44N NvPA== X-Gm-Message-State: AMCzsaVBO+deW2sSTczh8Tw0op6Fi/mkoW2E3MswQLt7PeyHkoqEqzMJ 0FKHz6BGcHJEIChfIBIzfBxT6w== X-Google-Smtp-Source: ABhQp+R4mSOWqrwcfT6h5nA9WJTySC2s9dlpPT8v8sFyFnp0mXT7GAJ9L2RCY7lCrnQ1wjxIRPRzbg== X-Received: by 10.98.217.138 with SMTP id b10mr1970558pfl.39.1509149417522; Fri, 27 Oct 2017 17:10:17 -0700 (PDT) Received: from localhost.localdomain (c-73-162-13-107.hsd1.ca.comcast.net. [73.162.13.107]) by smtp.gmail.com with ESMTPSA id 2sm9068398pgb.30.2017.10.27.17.10.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 27 Oct 2017 17:10:16 -0700 (PDT) From: Tom Herbert To: davem@davemloft.net Cc: pablo@netfilter.org, laforge@gnumonks.org, aschultz@tpip.net, netdev@vger.kernel.org, rohit@quantonium.net, Tom Herbert Subject: [PATCH v7 net-next 07/13] gtp: Use goto for exceptions in gtp_udp_encap_recv funcs Date: Fri, 27 Oct 2017 17:09:31 -0700 Message-Id: <20171028000937.2631-8-tom@quantonium.net> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171028000937.2631-1-tom@quantonium.net> References: <20171028000937.2631-1-tom@quantonium.net> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Consolidate return logic to make it easier to extend. Signed-off-by: Tom Herbert --- drivers/net/gtp.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/drivers/net/gtp.c b/drivers/net/gtp.c index 265fa9fdbf3d..2daf434ae543 100644 --- a/drivers/net/gtp.c +++ b/drivers/net/gtp.c @@ -234,23 +234,27 @@ static int gtp0_udp_encap_recv(struct gtp_dev *gtp, struct sk_buff *skb) struct pdp_ctx *pctx; if (!pskb_may_pull(skb, hdrlen)) - return -1; + goto drop; gtp0 = (struct gtp0_header *)(skb->data + sizeof(struct udphdr)); if ((gtp0->flags >> 5) != GTP_V0) - return 1; + goto pass; if (gtp0->type != GTP_TPDU) - return 1; + goto pass; pctx = gtp0_pdp_find(gtp, be64_to_cpu(gtp0->tid)); if (!pctx) { netdev_dbg(gtp->dev, "No PDP ctx to decap skb=%p\n", skb); - return 1; + goto pass; } return gtp_rx(pctx, skb, hdrlen, gtp->role); +drop: + return -1; +pass: + return 1; } static int gtp1u_udp_encap_recv(struct gtp_dev *gtp, struct sk_buff *skb) @@ -261,15 +265,15 @@ static int gtp1u_udp_encap_recv(struct gtp_dev *gtp, struct sk_buff *skb) struct pdp_ctx *pctx; if (!pskb_may_pull(skb, hdrlen)) - return -1; + goto drop; gtp1 = (struct gtp1_header *)(skb->data + sizeof(struct udphdr)); if ((gtp1->flags >> 5) != GTP_V1) - return 1; + goto pass; if (gtp1->type != GTP_TPDU) - return 1; + goto pass; /* From 29.060: "This field shall be present if and only if any one or * more of the S, PN and E flags are set.". @@ -282,17 +286,21 @@ static int gtp1u_udp_encap_recv(struct gtp_dev *gtp, struct sk_buff *skb) /* Make sure the header is larger enough, including extensions. */ if (!pskb_may_pull(skb, hdrlen)) - return -1; + goto drop; gtp1 = (struct gtp1_header *)(skb->data + sizeof(struct udphdr)); pctx = gtp1_pdp_find(gtp, ntohl(gtp1->tid)); if (!pctx) { netdev_dbg(gtp->dev, "No PDP ctx to decap skb=%p\n", skb); - return 1; + goto drop; } return gtp_rx(pctx, skb, hdrlen, gtp->role); +drop: + return -1; +pass: + return 1; } static void gtp_encap_destroy(struct sock *sk)