Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp2549671pxj; Mon, 10 May 2021 05:43:02 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyWgWpDWoWP+LwAuEg94u6OGmkCGQcuieDRSFZNUhYHmwhhlZ75LpRGlQnnlwj1Bmc97iWx X-Received: by 2002:a17:906:3c4e:: with SMTP id i14mr25227436ejg.245.1620650582385; Mon, 10 May 2021 05:43:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620650582; cv=none; d=google.com; s=arc-20160816; b=AUXOesat7c0JxqZmkfb8ek06LuI22sZmc+l6eHXqPnElbsMclGm3COo7IswZaUFfzg DKRO2S18zQmVBGYEv4gdaaYJ9+6tp56+NE3TyYPeztGu4K/Dq1JmxdV+FMv+K0DMOsOS MI4vVpiPcInPeqjBshd91YbfuY6La73Jw7gBAJakSFqY3QzQl9Fmb1hXAoOeBykQK2E1 aYISUyEVnRIC9xkzzIOxY8HL+ymVPwR2gg/mbspxu4u68Cv6bpoMAR5I9pIm+Qy6TX0h vdHZ4xX1P98jNgQqJBGkRSyjhVmzxMqG66G72RlewDNAlhzIORX4mcejCNaSX8zuA4/t sBLg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=Q5Cbcl15b3Ju6cV26FVaXxiepfxn0x3YN/YrQ7Ehayg=; b=lngNOMGPbGQAMttp7Fubpiqgh0dK3CRsA7hnBeURhmyrr1xnnlrcoefxma/r6Epv01 mhx1otqpirpd3R0WVb7mP95j8DQqc/PcqdPFSebNNWnTNayn7Xc2Etiu8W4CGn3PuhXT jeSDrKNYRr9zUs7YjwNGYk1GQAtv5y9AJRRigQZuieQrQPAAKTq/hSvtdZ7BEyM3wuiG n8M8aUZvOpjvnj9To3mX5v5tRrln7A1ojdQd7CAAI0mXO81ylRyrFobPfSFTf9NCNlPx 7I7Zj/p2Xe2xaN3HVfVUTe/b1eGw3a+aj4wQ5fjTcMJ3v2sSxNWwPO7ZRrc/hU8bUV85 pTHg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=ZI7SdqB+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id z9si13778126edi.208.2021.05.10.05.42.38; Mon, 10 May 2021 05:43:02 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=ZI7SdqB+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1348202AbhEJMke (ORCPT + 99 others); Mon, 10 May 2021 08:40:34 -0400 Received: from mail.kernel.org ([198.145.29.99]:54898 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238031AbhEJLQu (ORCPT ); Mon, 10 May 2021 07:16:50 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 5C7F161627; Mon, 10 May 2021 11:12:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1620645129; bh=xYtFkeN39Orcq0WeEDTUJpCePQ2GI+uIcpy5yH+7+II=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ZI7SdqB+G1T454JaIveE1tuQ6exCFELtAH6uFjUQVrqnmm7PCp2gfXuz0rBpMcHiE Xmwas8zcJoQKiHwo3+Re+2lV0e/Q3lYc6OjQw5IIXwXqC10qz3rk1CMJLhA5qV/Eod LB+7opwQL37HADrV2jmtmRD4ZGelbACMmlCq/UPw= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Peter Chen , Hemant Kumar , Wesley Cheng Subject: [PATCH 5.12 364/384] usb: gadget: Fix double free of device descriptor pointers Date: Mon, 10 May 2021 12:22:33 +0200 Message-Id: <20210510102026.769116821@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210510102014.849075526@linuxfoundation.org> References: <20210510102014.849075526@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Hemant Kumar commit 43c4cab006f55b6ca549dd1214e22f5965a8675f upstream. Upon driver unbind usb_free_all_descriptors() function frees all speed descriptor pointers without setting them to NULL. In case gadget speed changes (i.e from super speed plus to super speed) after driver unbind only upto super speed descriptor pointers get populated. Super speed plus desc still holds the stale (already freed) pointer. Fix this issue by setting all descriptor pointers to NULL after freeing them in usb_free_all_descriptors(). Fixes: f5c61225cf29 ("usb: gadget: Update function for SuperSpeedPlus") cc: stable@vger.kernel.org Reviewed-by: Peter Chen Signed-off-by: Hemant Kumar Signed-off-by: Wesley Cheng Link: https://lore.kernel.org/r/1619034452-17334-1-git-send-email-wcheng@codeaurora.org Signed-off-by: Greg Kroah-Hartman --- drivers/usb/gadget/config.c | 4 ++++ 1 file changed, 4 insertions(+) --- a/drivers/usb/gadget/config.c +++ b/drivers/usb/gadget/config.c @@ -194,9 +194,13 @@ EXPORT_SYMBOL_GPL(usb_assign_descriptors void usb_free_all_descriptors(struct usb_function *f) { usb_free_descriptors(f->fs_descriptors); + f->fs_descriptors = NULL; usb_free_descriptors(f->hs_descriptors); + f->hs_descriptors = NULL; usb_free_descriptors(f->ss_descriptors); + f->ss_descriptors = NULL; usb_free_descriptors(f->ssp_descriptors); + f->ssp_descriptors = NULL; } EXPORT_SYMBOL_GPL(usb_free_all_descriptors);