Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp2517153imm; Mon, 24 Sep 2018 05:48:20 -0700 (PDT) X-Google-Smtp-Source: ANB0VdbziOh+q6nfxbvRqyCv12Xh0BuXCame3yFIsgkkSCIy9RMj7b0axFqwgpGMlVCuXb3Mshug X-Received: by 2002:aa7:82c3:: with SMTP id f3-v6mr10471751pfn.136.1537793299953; Mon, 24 Sep 2018 05:48:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1537793299; cv=none; d=google.com; s=arc-20160816; b=Ab3Eb+LghPEDQc0FI4R6VIuchxpBwFBEGUkO3ZO1f+zs9k/Ij84xhC31r2a3MCAVPg 75bcpK+u1PVlV7lp6vlGo+KK7PGNiZj/0PWqx2/6lTy7NK0tFHpQdmXDC32qqeG5wrd2 bF5E1W95GLqbRnPXARinS5C6xl9atO1u//+hn49WLinXthS5P+69t1auyoEvmHTRq5gW xKAsuwuudvUp1u6kqySOVZQ7Fw6D4r24IL57LDrYJ+VvVxxiwMueHlFwSy10ZKnLeUes xOs41ijaQc/M2A4h/mKkUVxQtLcPtv6QZ51k9pr+JDrewi6FtgQh1Wu37PLEaebQffsM G3DA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from; bh=C1v+EgrVupoxzFvFd6/l3Dz9G386uUhZIRp/1IeqVpc=; b=EpkbUdHYgLIflQQiWsoEDt2zY90xSvF3aBAtmMMLc7TcF3wLUS1JTnznCJeNvHVM8F Rql3rZ+0e4Dj3d0S5mG1yECBY3uabe+UY3PWnGbLirvAk6XleqnzJViYt49q/qC0ab1J m+D354nqjThlmyI+G6lBWhXidiB77U/Tbkz4Zo2q1Hcj9q77fTpwrmr/ux0PrPQZyTGL QFzkB3q0KzSmVUScPtM77Y7nLnF1Ow74zZ+XU7AIKoUz9T6IEJriqN4NixCcHOtlfgnu mgd3UID28rYThaAIVBcGJe5QIqLIKrgh24/hElhohyD212k++JBooll8iyqaDMdZHa90 u2NA== 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 u64-v6si33983578pgu.533.2018.09.24.05.48.04; Mon, 24 Sep 2018 05:48:19 -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 S2389403AbeIXSsG (ORCPT + 99 others); Mon, 24 Sep 2018 14:48:06 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:59876 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730401AbeIXSsF (ORCPT ); Mon, 24 Sep 2018 14:48:05 -0400 Received: from localhost (ip-213-127-77-73.ip.prioritytelecom.net [213.127.77.73]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 15BAF109E; Mon, 24 Sep 2018 12:46:05 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Hannes Reinecke , Johannes Thumshirn , "Martin K. Petersen" , Sasha Levin Subject: [PATCH 4.18 214/235] scsi: libfc: fixup sleeping function called from invalid context Date: Mon, 24 Sep 2018 13:53:20 +0200 Message-Id: <20180924113125.046973604@linuxfoundation.org> X-Mailer: git-send-email 2.19.0 In-Reply-To: <20180924113103.999624566@linuxfoundation.org> References: <20180924113103.999624566@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.18-stable review patch. If anyone has any objections, please let me know. ------------------ From: Hannes Reinecke [ Upstream commit fa519f701d27198a2858bb108fc18ea9d8c106a7 ] fc_rport_login() will be calling mutex_lock() while running inside an RCU-protected section, triggering the warning 'sleeping function called from invalid context'. To fix this we can drop the rcu functions here altogether as the disc mutex protecting the list itself is already held, preventing any list manipulation. Fixes: a407c593398c ("scsi: libfc: Fixup disc_mutex handling") Signed-off-by: Hannes Reinecke Acked-by: Johannes Thumshirn Signed-off-by: Martin K. Petersen Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- drivers/scsi/libfc/fc_disc.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) --- a/drivers/scsi/libfc/fc_disc.c +++ b/drivers/scsi/libfc/fc_disc.c @@ -294,9 +294,11 @@ static void fc_disc_done(struct fc_disc * discovery, reverify or log them in. Otherwise, log them out. * Skip ports which were never discovered. These are the dNS port * and ports which were created by PLOGI. + * + * We don't need to use the _rcu variant here as the rport list + * is protected by the disc mutex which is already held on entry. */ - rcu_read_lock(); - list_for_each_entry_rcu(rdata, &disc->rports, peers) { + list_for_each_entry(rdata, &disc->rports, peers) { if (!kref_get_unless_zero(&rdata->kref)) continue; if (rdata->disc_id) { @@ -307,7 +309,6 @@ static void fc_disc_done(struct fc_disc } kref_put(&rdata->kref, fc_rport_destroy); } - rcu_read_unlock(); mutex_unlock(&disc->disc_mutex); disc->disc_callback(lport, event); mutex_lock(&disc->disc_mutex);