Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp1704006ybi; Wed, 17 Jul 2019 20:26:29 -0700 (PDT) X-Google-Smtp-Source: APXvYqyXpq1LJleztyx/Rlf0y8RlWbrO4CSZixfMgSpjAarihEfOmqUUBYmY1fhc206vuzbdQPXc X-Received: by 2002:a65:500d:: with SMTP id f13mr44482623pgo.151.1563420389704; Wed, 17 Jul 2019 20:26:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1563420389; cv=none; d=google.com; s=arc-20160816; b=Lzpc1/KnzckzM2854zk6jKaQ4Cb2Pfq7DYf9MwJHlAWlgg7C3u7bKbSiYysYj3Yo2B vJ4F3J+6LNgJINCOHMQRAPZbeoEv9TiONGYp5bHlrNreLauvGtmeoCx2PUiWT9T6k2Fj nMcpRoJIv5DPMeEt1D3i10tGf+z6UO3ReNmB6laXVr6nPIo1Q2bgRKyoqzbcZwXbt7SR XrzG/hsZ667Cj8c0Lk9uNjwU3EEo8s2anW3alKl3Cjbr1xzTszZThQ9IpqhnkkhxOOln VownLUp+MHzLzWFuEKRNOIZncWB/fj0cSFmhQesYM0k+ee5Sq97DWKwDvsTrpjSKJZVt zIMg== 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:dkim-signature; bh=qD6p12qPaODpGqES6Byd9CSZ8F9ltynqffrLqGD9930=; b=cwvXbBGkOnUki+DZdh2jnzTn1y5KCoOXtNnv/ZnIWR37RHHWiHyNEAgfVrStvdt+bP rO0GQBpPD1ntkUDUQtag6J8A3yy0DHQFKv5tUPaSY127tJy7mQou5imxRxPomKVVFnDq JRvKuYMicfK/MnQI4eFy5ZmhbB7q4C5XPBNRQGZinXkYVEzh75tdKnFpVGDAwz07DjTt 6RYt64zIdgNca+Z1Gc1vgOe1NYIgX6ePwh1uKD0bbAqjZ4vzpeIw6FMrrlFDDFBvR9TY BYBOxxoGtIkXq4eQO3wrmSOLVzL+gF62qYQsJBF1816vjwnJ2nKkkNqRq/xCytXNRpvm n0TQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=bWMJ95Sn; 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 d22si24660024plr.120.2019.07.17.20.26.13; Wed, 17 Jul 2019 20:26:29 -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; dkim=pass header.i=@kernel.org header.s=default header.b=bWMJ95Sn; 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 S2390294AbfGRDYG (ORCPT + 99 others); Wed, 17 Jul 2019 23:24:06 -0400 Received: from mail.kernel.org ([198.145.29.99]:39036 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2390442AbfGRDH1 (ORCPT ); Wed, 17 Jul 2019 23:07:27 -0400 Received: from localhost (115.42.148.210.bf.2iij.net [210.148.42.115]) (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 5CA7B205F4; Thu, 18 Jul 2019 03:07:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1563419246; bh=mqG7slJOy0hBqWHF3pVFLrGyaz0n0s6bosgUbxrHbHM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=bWMJ95Sne0F2QV0ARQh7KrUhig6x6+gL1Sg8AMOltHwE3KwSo05V/DvWX0JZNwNw3 afb689qe9JJdEpo4BeRWVFEJo9I0VhHL6wMtLmCOQD+3ccIjDb2jX5oXZ2T6Z4zHuY lZ4y8tklXcMBAth/g1zyQnI4za64nU/7/bZ76USg= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, David Howells , Sasha Levin Subject: [PATCH 4.19 13/47] afs: Fix uninitialised spinlock afs_volume::cb_break_lock Date: Thu, 18 Jul 2019 12:01:27 +0900 Message-Id: <20190718030049.759890872@linuxfoundation.org> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190718030045.780672747@linuxfoundation.org> References: <20190718030045.780672747@linuxfoundation.org> User-Agent: quilt/0.66 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 [ Upstream commit 90fa9b64523a645a97edc0bdcf2d74759957eeee ] Fix the cb_break_lock spinlock in afs_volume struct by initialising it when the volume record is allocated. Also rename the lock to cb_v_break_lock to distinguish it from the lock of the same name in the afs_server struct. Without this, the following trace may be observed when a volume-break callback is received: INFO: trying to register non-static key. the code is fine but needs lockdep annotation. turning off the locking correctness validator. CPU: 2 PID: 50 Comm: kworker/2:1 Not tainted 5.2.0-rc1-fscache+ #3045 Hardware name: ASUS All Series/H97-PLUS, BIOS 2306 10/09/2014 Workqueue: afs SRXAFSCB_CallBack Call Trace: dump_stack+0x67/0x8e register_lock_class+0x23b/0x421 ? check_usage_forwards+0x13c/0x13c __lock_acquire+0x89/0xf73 lock_acquire+0x13b/0x166 ? afs_break_callbacks+0x1b2/0x3dd _raw_write_lock+0x2c/0x36 ? afs_break_callbacks+0x1b2/0x3dd afs_break_callbacks+0x1b2/0x3dd ? trace_event_raw_event_afs_server+0x61/0xac SRXAFSCB_CallBack+0x11f/0x16c process_one_work+0x2c5/0x4ee ? worker_thread+0x234/0x2ac worker_thread+0x1d8/0x2ac ? cancel_delayed_work_sync+0xf/0xf kthread+0x11f/0x127 ? kthread_park+0x76/0x76 ret_from_fork+0x24/0x30 Fixes: 68251f0a6818 ("afs: Fix whole-volume callback handling") Signed-off-by: David Howells Signed-off-by: Sasha Levin --- fs/afs/callback.c | 4 ++-- fs/afs/internal.h | 2 +- fs/afs/volume.c | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/fs/afs/callback.c b/fs/afs/callback.c index 5f261fbf2182..4ad701250299 100644 --- a/fs/afs/callback.c +++ b/fs/afs/callback.c @@ -276,9 +276,9 @@ static void afs_break_one_callback(struct afs_server *server, struct afs_super_info *as = AFS_FS_S(cbi->sb); struct afs_volume *volume = as->volume; - write_lock(&volume->cb_break_lock); + write_lock(&volume->cb_v_break_lock); volume->cb_v_break++; - write_unlock(&volume->cb_break_lock); + write_unlock(&volume->cb_v_break_lock); } else { data.volume = NULL; data.fid = *fid; diff --git a/fs/afs/internal.h b/fs/afs/internal.h index 34c02fdcc25f..aea19614c082 100644 --- a/fs/afs/internal.h +++ b/fs/afs/internal.h @@ -477,7 +477,7 @@ struct afs_volume { unsigned int servers_seq; /* Incremented each time ->servers changes */ unsigned cb_v_break; /* Break-everything counter. */ - rwlock_t cb_break_lock; + rwlock_t cb_v_break_lock; afs_voltype_t type; /* type of volume */ short error; diff --git a/fs/afs/volume.c b/fs/afs/volume.c index 3037bd01f617..5ec186ec5651 100644 --- a/fs/afs/volume.c +++ b/fs/afs/volume.c @@ -47,6 +47,7 @@ static struct afs_volume *afs_alloc_volume(struct afs_mount_params *params, atomic_set(&volume->usage, 1); INIT_LIST_HEAD(&volume->proc_link); rwlock_init(&volume->servers_lock); + rwlock_init(&volume->cb_v_break_lock); memcpy(volume->name, vldb->name, vldb->name_len + 1); slist = afs_alloc_server_list(params->cell, params->key, vldb, type_mask); -- 2.20.1