From patchwork Mon Jun 25 17:49:35 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: sjur.brandeland@stericsson.com X-Patchwork-Id: 167185 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 5847BB6FAB for ; Tue, 26 Jun 2012 03:50:02 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754295Ab2FYRt5 (ORCPT ); Mon, 25 Jun 2012 13:49:57 -0400 Received: from mail-lb0-f174.google.com ([209.85.217.174]:58023 "EHLO mail-lb0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751587Ab2FYRt4 (ORCPT ); Mon, 25 Jun 2012 13:49:56 -0400 Received: by mail-lb0-f174.google.com with SMTP id gm6so6807294lbb.19 for ; Mon, 25 Jun 2012 10:49:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references:mime-version:content-type:content-transfer-encoding; bh=qzABQ7If7FPNFA9LBVPrGyugp/jMG41lLPpTchqTJXs=; b=YqpKFXkIOOh+7+HF6HPE1YpMlexWAwSKN2Prq399mTh/DWkjX/c1GNYke4qeFjieKh 6vpSiBjKS9v8Op0CgZJEN9ypRo6SvkyEnFTLw3Q/xc0I5PdWSKULmy3EV9nt2gFv2hmv yCBDrJG+Dt+UKYj22OXVxnrG8il1kAjGYxUe/314gLbpkRsog0LYTOp3rF+3ZbbuBrbI DSrQw5IUGXaA/BXoM1lyMplbbM5RCMYYxgxXfI6pb8xOeX16yjcNFsBnyQTZZEWV29jT QSa7/lYI3JvNa43+TrhdNaFFYbCBIg8NPk180dINXBZFx4zYyj/TxKMCQYkVTOnjKkc2 DCfg== Received: by 10.152.148.169 with SMTP id tt9mr12845362lab.49.1340646595352; Mon, 25 Jun 2012 10:49:55 -0700 (PDT) Received: from sjur-laptop.stericsson.local ([212.4.57.94]) by mx.google.com with ESMTPS id h9sm6809882lbi.9.2012.06.25.10.49.53 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 25 Jun 2012 10:49:54 -0700 (PDT) From: sjur.brandeland@stericsson.com To: davem@davemloft.net Cc: netdev@vger.kernel.org, sjurbren@gmail.com, Kim Lilliestierna XX , =?UTF-8?q?Sjur=20Br=C3=A6ndeland?= Subject: [net-next 03/11] caif: Fixed potential memory leak Date: Mon, 25 Jun 2012 19:49:35 +0200 Message-Id: <1340646583-21059-4-git-send-email-sjur.brandeland@stericsson.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1340646583-21059-1-git-send-email-sjur.brandeland@stericsson.com> References: <1340646583-21059-1-git-send-email-sjur.brandeland@stericsson.com> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Kim Lilliestierna XX Rearranged the allocation and packet creations to avoid potential leaks in error path. Signed-off-by: Kim Lilliestierna Signed-off-by: Sjur Brændeland --- net/caif/cfctrl.c | 17 +++++++++-------- 1 files changed, 9 insertions(+), 8 deletions(-) diff --git a/net/caif/cfctrl.c b/net/caif/cfctrl.c index 047cd0e..44f270f 100644 --- a/net/caif/cfctrl.c +++ b/net/caif/cfctrl.c @@ -175,15 +175,17 @@ static void init_info(struct caif_payload_info *info, struct cfctrl *cfctrl) void cfctrl_enum_req(struct cflayer *layer, u8 physlinkid) { + struct cfpkt *pkt; struct cfctrl *cfctrl = container_obj(layer); - struct cfpkt *pkt = cfpkt_create(CFPKT_CTRL_PKT_LEN); struct cflayer *dn = cfctrl->serv.layer.dn; - if (!pkt) - return; + if (!dn) { pr_debug("not able to send enum request\n"); return; } + pkt = cfpkt_create(CFPKT_CTRL_PKT_LEN); + if (!pkt) + return; caif_assert(offsetof(struct cfctrl, serv.layer) == 0); init_info(cfpkt_info(pkt), cfctrl); cfpkt_info(pkt)->dev_info->id = physlinkid; @@ -302,18 +304,17 @@ int cfctrl_linkdown_req(struct cflayer *layer, u8 channelid, struct cflayer *client) { int ret; + struct cfpkt *pkt; struct cfctrl *cfctrl = container_obj(layer); - struct cfpkt *pkt = cfpkt_create(CFPKT_CTRL_PKT_LEN); struct cflayer *dn = cfctrl->serv.layer.dn; - if (!pkt) - return -ENOMEM; - if (!dn) { pr_debug("not able to send link-down request\n"); return -ENODEV; } - + pkt = cfpkt_create(CFPKT_CTRL_PKT_LEN); + if (!pkt) + return -ENOMEM; cfpkt_addbdy(pkt, CFCTRL_CMD_LINK_DESTROY); cfpkt_addbdy(pkt, channelid); init_info(cfpkt_info(pkt), cfctrl);