Received: by 2002:a25:b794:0:0:0:0:0 with SMTP id n20csp5054595ybh; Tue, 6 Aug 2019 23:34:50 -0700 (PDT) X-Google-Smtp-Source: APXvYqyD2st5XTpNJmlNK7uCTiWYZMRw89ki662cWqxJ6hjg9PgcnM7P878Woh1RvCM/novP61jr X-Received: by 2002:a17:902:eb:: with SMTP id a98mr6374116pla.75.1565159689912; Tue, 06 Aug 2019 23:34:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1565159689; cv=none; d=google.com; s=arc-20160816; b=HakEBkxikEIc7ozXkZEbgrx3DQsmQAzPOqDCDo6GtyWZqEdlYwnG8K0LPR+RFRFR/0 43+wiEJk+wMIenDwkAu6m/rbtfSXWE1/0JMs9l19QWr0XH37jKt4gAnvES77Fdj5sHAK x898J/8VBuXBAqNo4tRbKN4VyAkFwaVTa3i+zqgiGmOnUGLRL2v65Djh80HXJGv9Lvk7 KWZAjhE5dU/S7YVWbAW0RhPd7z7zeOVQgqB0sV/7iD/wyRx2N89UIOlQsJ/psKcvhfKl Vjjcwl5ELcHQe9CQZ2rSL6IttQAA/MIJ/JJJ6NXqKIB9u1V+Gy5RDLr/Q+UcwIw4Oc+H YloA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:subject:cc:to:from:message-id:date; bh=+6vPOzBm+2rvEvHhljLFuz1ZyIOa9CM+RXotEXRNwuE=; b=l7LpC5HoAmsntL7LwCca8lMZ1Bd/uQEnwHHuihT2ZjFbIp/W24JSkJ/zmz/rS6md/D yo5tLNZKFsgmwOCzqdGiLJamyG8NnpOwDgQiyi7Mv0Dpa9fU6kHK7WMo15hptRAKmxpl nC99M2/IoupD4TcfZ242s+5Xe7CP6Mr+D8zVDTPuvrZ6LaXk7JR/w4VHBrMC3kqANFKJ bGCIV4KkFMvMR+MLzFB8Pw5l4g8Q3rxln3dPQBNukOzE08Ipg4QXwrGyVNUh5bKYMKJE UE4ZKhuAx1NmqRvLzauEG9u3rA8N9ccmBRiudPCGvANe/RRXVt1/4qG+vUAaZUmbsDQi /ofQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f34si45221025plf.305.2019.08.06.23.34.34; Tue, 06 Aug 2019 23:34:49 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727146AbfHGGdx (ORCPT + 99 others); Wed, 7 Aug 2019 02:33:53 -0400 Received: from mx2.suse.de ([195.135.220.15]:41172 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726734AbfHGGdx (ORCPT ); Wed, 7 Aug 2019 02:33:53 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 4F4A1AC94; Wed, 7 Aug 2019 06:33:52 +0000 (UTC) Date: Wed, 07 Aug 2019 08:33:50 +0200 Message-ID: From: Takashi Iwai To: Wenwen Wang Cc: "moderated list:SOUND" , Thomas Gleixner , Greg Kroah-Hartman , Allison Randal , Jaroslav Kysela , Takashi Iwai , open list Subject: Re: [PATCH] ALSA: pcm: fix a memory leak bug In-Reply-To: References: User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI/1.14.6 (Maruoka) FLIM/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL/10.8 Emacs/25.3 (x86_64-suse-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 07 Aug 2019 08:15:17 +0200, Wenwen Wang wrote: > > In hiface_pcm_init(), 'rt' is firstly allocated through kzalloc(). Later > on, hiface_pcm_init_urb() is invoked to initialize 'rt->out_urbs[i]'. > However, if the initialization fails, 'rt' is not deallocated, leading to a > memory leak bug. > > To fix the above issue, free 'rt' before returning the error. > > Signed-off-by: Wenwen Wang > --- > sound/usb/hiface/pcm.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/sound/usb/hiface/pcm.c b/sound/usb/hiface/pcm.c > index 14fc1e1..5dbcd0d 100644 > --- a/sound/usb/hiface/pcm.c > +++ b/sound/usb/hiface/pcm.c > @@ -599,8 +599,10 @@ int hiface_pcm_init(struct hiface_chip *chip, u8 > extra_freq) > for (i = 0; i < PCM_N_URBS; i++) { > ret = hiface_pcm_init_urb(&rt->out_urbs[i], chip, OUT_EP, > hiface_pcm_out_urb_handler); > - if (ret < 0) > + if (ret < 0) { > + kfree(rt); > return ret; > + } Unfortunately this still leaves some memory. We need to release rt->out_urbs[], too. The relevant code is already in hiface_pcm_destroy(), so factor out the looped kfree() there and call it from both places. Care to resubmit with more fixes? thanks, Takashi