Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp2712296pxv; Sun, 11 Jul 2021 23:31:22 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzXmP7RrhHDLXUkgll8VrjcOcG4vXJrd72yEEbnWdzBVjJukTABd2PXrDyA5iMiFnp9E/GE X-Received: by 2002:a05:6402:b79:: with SMTP id cb25mr62695068edb.164.1626071482442; Sun, 11 Jul 2021 23:31:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626071482; cv=none; d=google.com; s=arc-20160816; b=0pE3h7TcdelaRXKn9sEk2Qb837g9rzg4FXaYkFTxpaApRJcHSSARowcPcGK88KZvE0 OroFfKns1ANMTQb/bNQ0AITtkcPuR4VicSdePF2sTRkubZ+6znoiRRxF48td+edStcom 8yy1vS8AI6muQl8xyBM1c3PvOR1R/GncWzzRJGPYG+h/NXj3a/1B+0AxnoSG3r6QiL32 RyRIo6O9jrK+VCQHRlJ+T2x5czzVULktsHhGyHLjOXvg0FAwld9/f9WO7+pfJJtASXEJ hj0o65zcxSyopBNoqfslXVnXz6bZtkjBb1cF9gD3zjA2isysfPMYgQn55oH4sxWoEXGT o9SQ== 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=EQHPa4jP4yec4BJJUxOM3t/C3fsJ+/vch0+5rD2TEd4=; b=NfjNWXYlUq9+pd0yejEKCM411OBM16ayMPr+GbFh7tKx0KimWKkcBmGqtR8gLHkWFV 6tFnnX8/rfD+wwdqlFT/Z8CTHyESDJLt4OrQk/K5IWZAIioNoN3yvkgRhOQQi/fRHt0s 2hn3sS1hgUG6NSf7/Q4QaceacF5goZ1JGKFEBXU8hTmZEybJqpQJXEwKU50/UNkDOUTD WMwZjV8lW8O+okbD9uJEV0FVRkqgQAhiep6fUKyH2qT38CUeYaYUgcJ8h8DHsH+0HM9I wFIlvdijCztpd/FcznezhrEjIjQtAApJXu/5BWd0SANxgQ54jgg8bpo18k+BkCpWo1Mh patQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=i6lp50Pb; 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 l5si17054520edv.367.2021.07.11.23.30.59; Sun, 11 Jul 2021 23:31:22 -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=i6lp50Pb; 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 S236782AbhGLGaY (ORCPT + 99 others); Mon, 12 Jul 2021 02:30:24 -0400 Received: from mail.kernel.org ([198.145.29.99]:48084 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235101AbhGLG0M (ORCPT ); Mon, 12 Jul 2021 02:26:12 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id A1F6B61184; Mon, 12 Jul 2021 06:23:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1626070990; bh=uLIQO4r1Imz3Mj2RbRP7EBzlMUkrXuWN8f6ZFLvmRN0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=i6lp50PbaV8gWV4L/Pxwb4JzWzqMj4Z6huYmIF+MHlGz4xEQm3q5b00NR9Wq6w0tK 3xOBjldVyuZNGdL/dC9Hw3cOP+GrmMHrVAO8vnClxyth3w9rpfKXGmuM/KpD97Gft7 rBz87GAv/vn5eC2uOfHwRkYz0IPnv1+kYGRLfTaU= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, syzbot+b80c9959009a9325cdff@syzkaller.appspotmail.com, Dongliang Mu , Alexander Aring , Stefan Schmidt , Sasha Levin Subject: [PATCH 5.4 227/348] ieee802154: hwsim: Fix memory leak in hwsim_add_one Date: Mon, 12 Jul 2021 08:10:11 +0200 Message-Id: <20210712060732.212207951@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210712060659.886176320@linuxfoundation.org> References: <20210712060659.886176320@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: Dongliang Mu [ Upstream commit 28a5501c3383f0e6643012c187b7c2027ef42aea ] No matter from hwsim_remove or hwsim_del_radio_nl, hwsim_del fails to remove the entry in the edges list. Take the example below, phy0, phy1 and e0 will be deleted, resulting in e1 not freed and accessed in the future. hwsim_phys | ------------------------------ | | phy0 (edges) phy1 (edges) ----> e1 (idx = 1) ----> e0 (idx = 0) Fix this by deleting and freeing all the entries in the edges list between hwsim_edge_unsubscribe_me and list_del(&phy->list). Reported-by: syzbot+b80c9959009a9325cdff@syzkaller.appspotmail.com Fixes: 1c9f4a3fce77 ("ieee802154: hwsim: fix rcu handling") Signed-off-by: Dongliang Mu Acked-by: Alexander Aring Link: https://lore.kernel.org/r/20210616020901.2759466-1-mudongliangabcd@gmail.com Signed-off-by: Stefan Schmidt Signed-off-by: Sasha Levin --- drivers/net/ieee802154/mac802154_hwsim.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/net/ieee802154/mac802154_hwsim.c b/drivers/net/ieee802154/mac802154_hwsim.c index bf5ddd12a6f0..b6d967ae6b41 100644 --- a/drivers/net/ieee802154/mac802154_hwsim.c +++ b/drivers/net/ieee802154/mac802154_hwsim.c @@ -824,12 +824,17 @@ err_pib: static void hwsim_del(struct hwsim_phy *phy) { struct hwsim_pib *pib; + struct hwsim_edge *e; hwsim_edge_unsubscribe_me(phy); list_del(&phy->list); rcu_read_lock(); + list_for_each_entry_rcu(e, &phy->edges, list) { + list_del_rcu(&e->list); + hwsim_free_edge(e); + } pib = rcu_dereference(phy->pib); rcu_read_unlock(); -- 2.30.2