From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 48774C04AAF for ; Tue, 21 May 2019 08:11:46 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 0D0B321783 for ; Tue, 21 May 2019 08:11:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1558426306; bh=PW8rKhiv6DAQBdwmswPgLu9b/LxLy3Ee71zCQBTQzvY=; h=Subject:To:From:Date:List-ID:From; b=meeOBGaHp1NVAxRMkQSuhic78xQfF0SKl9rSmkRLq9dEqepa3SFyhXYbK7DDbhgrs pTIhjFHlPZPC0w13/3DEq1L5MXEB/c+hm3bNyKl4lYQrMEWnKVFHIeVGw947tjFZP9 6KQkCxI22Cg3KDkkyWpG5cMWLjuBzFfKUTCTu7Pc= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727174AbfEUILp (ORCPT ); Tue, 21 May 2019 04:11:45 -0400 Received: from mail.kernel.org ([198.145.29.99]:35172 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726319AbfEUILp (ORCPT ); Tue, 21 May 2019 04:11:45 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 3B8162173E; Tue, 21 May 2019 08:11:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1558426304; bh=PW8rKhiv6DAQBdwmswPgLu9b/LxLy3Ee71zCQBTQzvY=; h=Subject:To:From:Date:From; b=z1nZ+5MmtZEhQGpf054xBg50aBL6MXsD+Tgc1kWH3ukeOQpYFwQ+t8KnDNO5znBfl 84JqCax1fumYrftdYbLPG8v+t0vGL9cVlyFzmBEYoGEMEqC/aOIP1m+JXXK5cgpOgy OyC/jigtZDGOBU3p9B4Iu1thfFlXcPgVTbUOAv+8= Subject: patch "USB: rio500: fix memory leak in close after disconnect" added to usb-linus To: oneukum@suse.com, gregkh@linuxfoundation.org, stable@vger.kernel.org From: Date: Tue, 21 May 2019 10:11:34 +0200 Message-ID: <1558426294244184@kroah.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: 8bit Sender: stable-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org This is a note to let you know that I've just added the patch titled USB: rio500: fix memory leak in close after disconnect to my usb git tree which can be found at git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git in the usb-linus branch. The patch will show up in the next release of the linux-next tree (usually sometime within the next 24 hours during the week.) The patch will hopefully also be merged in Linus's tree for the next -rc kernel release. If you have any questions about this process, please let me know. >From e0feb73428b69322dd5caae90b0207de369b5575 Mon Sep 17 00:00:00 2001 From: Oliver Neukum Date: Thu, 9 May 2019 11:30:59 +0200 Subject: USB: rio500: fix memory leak in close after disconnect If a disconnected device is closed, rio_close() must free the buffers. Signed-off-by: Oliver Neukum Cc: stable Signed-off-by: Greg Kroah-Hartman --- drivers/usb/misc/rio500.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/drivers/usb/misc/rio500.c b/drivers/usb/misc/rio500.c index 1d397d93d127..a32d61a79ab8 100644 --- a/drivers/usb/misc/rio500.c +++ b/drivers/usb/misc/rio500.c @@ -86,9 +86,22 @@ static int close_rio(struct inode *inode, struct file *file) { struct rio_usb_data *rio = &rio_instance; - rio->isopen = 0; + /* against disconnect() */ + mutex_lock(&rio500_mutex); + mutex_lock(&(rio->lock)); - dev_info(&rio->rio_dev->dev, "Rio closed.\n"); + rio->isopen = 0; + if (!rio->present) { + /* cleanup has been delayed */ + kfree(rio->ibuf); + kfree(rio->obuf); + rio->ibuf = NULL; + rio->obuf = NULL; + } else { + dev_info(&rio->rio_dev->dev, "Rio closed.\n"); + } + mutex_unlock(&(rio->lock)); + mutex_unlock(&rio500_mutex); return 0; } -- 2.21.0