From patchwork Thu Apr 6 21:01:56 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Josef Bacik X-Patchwork-Id: 9668411 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 30B2B60364 for ; Thu, 6 Apr 2017 21:02:15 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 36F5D2858B for ; Thu, 6 Apr 2017 21:02:15 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 2B898285DD; Thu, 6 Apr 2017 21:02:15 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.4 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, RCVD_IN_DNSWL_HI, RCVD_IN_SORBS_SPAM autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7653E2858B for ; Thu, 6 Apr 2017 21:02:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753155AbdDFVCN (ORCPT ); Thu, 6 Apr 2017 17:02:13 -0400 Received: from mail-qk0-f195.google.com ([209.85.220.195]:33141 "EHLO mail-qk0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752974AbdDFVCM (ORCPT ); Thu, 6 Apr 2017 17:02:12 -0400 Received: by mail-qk0-f195.google.com with SMTP id p22so7596710qka.0 for ; Thu, 06 Apr 2017 14:02:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=toxicpanda-com.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:in-reply-to:references; bh=+mJGyTzRGaUtFBtXme0uXR2dJneCRC6v0Pow1+0kxwU=; b=KPG/b7NhCG9HzCLey/uh5IDFcG4HImo/CCIJjK7QxrvizWRQV+pNmDAQiOaqPlhHCB bEwgp0hT+AAFrdBsfnQPNTXCbREud1jImYrzHu0Qb/GWXh25sIuZ/NFOStMuzVrqKeW0 1qKcRY7Oxap6ZWjY6S1nd+JSqc630CWtoZYC/1B5stAexd62zCHiLUat7sVfOt7C/NAC gIGILyH1nI357dHkGjS1rNMWs2to46vDGgkxzkIR5ZwOdTRmlDFihe4tTvf7g1F56c0l RscPZc7ADB2e/jxV25PypryFeT1JktW2LUy1rlyftTDV8AsuAtQTLCIqUFdnkD0HTxzH YCmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=+mJGyTzRGaUtFBtXme0uXR2dJneCRC6v0Pow1+0kxwU=; b=sJ4GdIZ22knhSZj8w7XYmgzzHcg4YqBcWPZw8qbKaBJgDxnN8fZujhHPprR+EACeuc a+O1wz9gljoqye/kS8qggx7n3yNJ0tGhYmCVURqMUSqRLnRcSteruaWzPzm+dJprnOxE U87Mfycr9QzuJ2wDeCrewJkxTGdQs9aohV5m6eakXT+fIHtkcZoY9SQpP8GOclFIeMzZ hAv//iVGu5o8yjJmpPPL6FyVjHst61ATjEygfl0YjFQEie+VpQV0F9enfayOn2dCjnxH QpTUQB2k3MRPfZfvmuPU2WG92vi3fOmdjkaeNwdF2SE1X/T6b1TxhlbPhhBOsny1cKc9 fN9w== X-Gm-Message-State: AN3rC/7XqjNzxlfKXiY/6Itadc4TX8fEuybvOD6CinOmvnTOiVrAGKoJ4j9jwC3poa/7Ng== X-Received: by 10.55.111.71 with SMTP id k68mr7128918qkc.117.1491512532080; Thu, 06 Apr 2017 14:02:12 -0700 (PDT) Received: from localhost (cpe-2606-A000-4381-1201-225-22FF-FEB3-E51A.dyn6.twc.com. [2606:a000:4381:1201:225:22ff:feb3:e51a]) by smtp.gmail.com with ESMTPSA id b78sm1711367qkc.50.2017.04.06.14.02.11 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 06 Apr 2017 14:02:11 -0700 (PDT) From: Josef Bacik X-Google-Original-From: Josef Bacik To: axboe@kernel.dk, nbd-general@lists.sourceforge.net, linux-block@vger.kernel.org, kernel-team@fb.com Subject: [PATCH 01/12] nbd: put socket in error cases Date: Thu, 6 Apr 2017 17:01:56 -0400 Message-Id: <1491512527-4286-2-git-send-email-jbacik@fb.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1491512527-4286-1-git-send-email-jbacik@fb.com> References: <1491512527-4286-1-git-send-email-jbacik@fb.com> Sender: linux-block-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP When adding a new socket we look it up and then try to add it to our configuration. If any of those steps fail we need to make sure we put the socket so we don't leak them. Signed-off-by: Josef Bacik --- drivers/block/nbd.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c index 03ae729..a4fd82e 100644 --- a/drivers/block/nbd.c +++ b/drivers/block/nbd.c @@ -628,16 +628,21 @@ static int nbd_add_socket(struct nbd_device *nbd, struct block_device *bdev, if (nbd->task_setup != current) { dev_err(disk_to_dev(nbd->disk), "Device being setup by another task"); + sockfd_put(sock); return -EINVAL; } socks = krealloc(nbd->socks, (nbd->num_connections + 1) * sizeof(struct nbd_sock *), GFP_KERNEL); - if (!socks) + if (!socks) { + sockfd_put(sock); return -ENOMEM; + } nsock = kzalloc(sizeof(struct nbd_sock), GFP_KERNEL); - if (!nsock) + if (!nsock) { + sockfd_put(sock); return -ENOMEM; + } nbd->socks = socks;