Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp1174340pxb; Thu, 28 Jan 2021 09:38:59 -0800 (PST) X-Google-Smtp-Source: ABdhPJxIVkGI0xwllwSmLo6WQJv2Zp/r04GJvOc5zDBoRsZHtDgPI76L5tynxygCQ7SFT5v6Ec8J X-Received: by 2002:a05:6402:8cd:: with SMTP id d13mr682866edz.335.1611855539081; Thu, 28 Jan 2021 09:38:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1611855539; cv=none; d=google.com; s=arc-20160816; b=uNwvtb21K9VuVm04pgFAFkvzK5cIVLJPF7o80JvdtAEg0/n8+iCNjJqHp4gE/hTISh MmH0uRlqYDj9iyJ4VoPCKxEyL/FZDccYEvK1y3pr4/yQCtoIudW0S8SVY5wVCBvtdJik +8lxBb/0tBNOfJj9idkrPtM5b7pVNPvptIYOI0ZNiGi9wxgjOnNljEXmwMfAI3zhPyXR 8zZqrwyZlO7M+EJ6HciowPoh05FYeYQLm8B6KhnbuCewZyqXbERbZR899EBArnit3QcG Y58/mf3OiI8hKfVCXbiBzkf1iElszQPQyhKp5HKNJ7CGXObVueB/4cJxRm3y179GPlSr quVQ== 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 :references:in-reply-to:message-id:date:subject:cc:to:from; bh=vREg/AlndyrP0VzjjKheykzqgyKSxJfxOqUODpMcG0E=; b=dS0MWJjv/OwBouYa26hJrwhr7EEfu3ZAbKJgSQcLGIksirm8XffS6b4IXFpEjd85Rd 66gXTi2Dy4rFpJ5e1GCFS/WsNBjtMb23pl9kMZQfCTbQWukhs9QjGjaa/xSC92uatRJc hXWD/HaiQUoxh2PXyIcil/QJ9P12tWa2J1jh0g66LEo5KN4m77CmkFkXS+8npLn3MqvM bsCdJdDQc8YS1fY0Ei38OYP106MK19pl0Z0Rr6OM04YFxRV3QOsKbUSfU0pdpRPcAVJt zLooVuA4vd1xqwtcvnJllVze2euFepP+w/hlWPqanBEwPqKtsncSbjaSLhynA4FxUzCd 1eyg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id gx23si3102986ejb.171.2021.01.28.09.38.30; Thu, 28 Jan 2021 09:38:59 -0800 (PST) Received-SPF: pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232982AbhA1RhX (ORCPT + 99 others); Thu, 28 Jan 2021 12:37:23 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54944 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233172AbhA1RgU (ORCPT ); Thu, 28 Jan 2021 12:36:20 -0500 Received: from sipsolutions.net (s3.sipsolutions.net [IPv6:2a01:4f8:191:4433::2]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A08E3C061794 for ; Thu, 28 Jan 2021 09:35:38 -0800 (PST) Received: by sipsolutions.net with esmtpsa (TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.94) (envelope-from ) id 1l5BCi-00CwTh-PC; Thu, 28 Jan 2021 18:35:36 +0100 From: Johannes Berg To: linux-wireless@vger.kernel.org Cc: Johannes Berg , syzbot+4305e814f9b267131776@syzkaller.appspotmail.com Subject: [PATCH 4/4] cfg80211: call cfg80211_destroy_ifaces() with wiphy lock held Date: Thu, 28 Jan 2021 18:35:28 +0100 Message-Id: <20210128183454.d31df9cbd7ce.I1beb07c9492f0ade900e864a098c57041e7a7ebf@changeid> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20210128173528.76393-1-johannes@sipsolutions.net> References: <20210128173528.76393-1-johannes@sipsolutions.net> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org From: Johannes Berg This is needed since it calls into the driver, which must have the same context as if we got to destroy an interface through nl80211. Fix this, and add a direct lockdep assertion so we don't see it pop up only when the driver calls back to cfg80211. Fixes: a05829a7222e ("cfg80211: avoid holding the RTNL when calling the driver") Reported-by: syzbot+4305e814f9b267131776@syzkaller.appspotmail.com Signed-off-by: Johannes Berg --- net/wireless/core.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/net/wireless/core.c b/net/wireless/core.c index 200cd9f5fd5f..18f9a5c214b5 100644 --- a/net/wireless/core.c +++ b/net/wireless/core.c @@ -334,6 +334,7 @@ void cfg80211_destroy_ifaces(struct cfg80211_registered_device *rdev) struct wireless_dev *wdev, *tmp; ASSERT_RTNL(); + lockdep_assert_wiphy(&rdev->wiphy); list_for_each_entry_safe(wdev, tmp, &rdev->wiphy.wdev_list, list) { if (wdev->nl_owner_dead) @@ -349,7 +350,9 @@ static void cfg80211_destroy_iface_wk(struct work_struct *work) destroy_work); rtnl_lock(); + wiphy_lock(&rdev->wiphy); cfg80211_destroy_ifaces(rdev); + wiphy_unlock(&rdev->wiphy); rtnl_unlock(); } -- 2.26.2