From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.9 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7B3C3C2D0BF for ; Tue, 17 Dec 2019 16:09:15 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 50E7C2467B for ; Tue, 17 Dec 2019 16:09:15 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amazon.com header.i=@amazon.com header.b="Uibd2SRs" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728194AbfLQQJL (ORCPT ); Tue, 17 Dec 2019 11:09:11 -0500 Received: from smtp-fw-6001.amazon.com ([52.95.48.154]:62168 "EHLO smtp-fw-6001.amazon.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728097AbfLQQJK (ORCPT ); Tue, 17 Dec 2019 11:09:10 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1576598950; x=1608134950; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=NVFC9qV2eoj93ZmYEaKEr4kRRmxcwtF4qCgUA1XgM8c=; b=Uibd2SRsT0lXIFVPheFrKDiW/MQjyLaEo7avuliqBE2gjL2aAGIbO9Mq gWZvAypsYVH6Yean+rh34UFUMQ7/k50Glh493ndI5rg6rbVtnup48LcJ9 0JoTfT/d+e4n9HRGC3KSSPjb18N1FmgQAZjdzT1TUsoUeLT6wDZ3sj1Gn 0=; IronPort-SDR: aRO1wLh9GqAmNNqsU3pay3V9ZmFMs4xiqfcPlG864PHeqR5P2dbee9CuQQFkIOZkbpvnzYiCR+ QfjSy1l0Ljog== X-IronPort-AV: E=Sophos;i="5.69,326,1571702400"; d="scan'208";a="9472487" Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO email-inbound-relay-2b-55156cd4.us-west-2.amazon.com) ([10.43.8.6]) by smtp-border-fw-out-6001.iad6.amazon.com with ESMTP; 17 Dec 2019 16:09:08 +0000 Received: from EX13MTAUEA002.ant.amazon.com (pdx4-ws-svc-p6-lb7-vlan2.pdx.amazon.com [10.170.41.162]) by email-inbound-relay-2b-55156cd4.us-west-2.amazon.com (Postfix) with ESMTPS id 7C933A21FC; Tue, 17 Dec 2019 16:09:06 +0000 (UTC) Received: from EX13D31EUA001.ant.amazon.com (10.43.165.15) by EX13MTAUEA002.ant.amazon.com (10.43.61.77) with Microsoft SMTP Server (TLS) id 15.0.1236.3; Tue, 17 Dec 2019 16:09:05 +0000 Received: from u886c93fd17d25d.ant.amazon.com (10.43.161.179) by EX13D31EUA001.ant.amazon.com (10.43.165.15) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Tue, 17 Dec 2019 16:09:00 +0000 From: SeongJae Park To: , , , CC: SeongJae Park , , , , , , Subject: [PATCH v11 4/6] xen/blkback: Protect 'reclaim_memory()' with 'reclaim_lock' Date: Tue, 17 Dec 2019 17:07:46 +0100 Message-ID: <20191217160748.693-5-sjpark@amazon.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191217160748.693-1-sjpark@amazon.com> References: <20191217160748.693-1-sjpark@amazon.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.43.161.179] X-ClientProxiedBy: EX13d09UWC002.ant.amazon.com (10.43.162.102) To EX13D31EUA001.ant.amazon.com (10.43.165.15) Sender: linux-block-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org From: SeongJae Park The 'reclaim_memory()' callback of blkback could race with 'xen_blkbk_probe()' and 'xen_blkbk_remove()'. In the case, incompletely linked 'backend_info' and 'blkif' might be exposed to the callback, thus result in bad results including NULL dereference. This commit fixes the problem by applying the 'reclaim_lock' protection to those. Note that this commit is separated for review purpose only. As the previous commit might result in race condition and might make bisect confuse, please squash this commit into previous commit if possible. Signed-off-by: SeongJae Park --- drivers/block/xen-blkback/xenbus.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/block/xen-blkback/xenbus.c b/drivers/block/xen-blkback/xenbus.c index 4f6ea4feca79..20045827a391 100644 --- a/drivers/block/xen-blkback/xenbus.c +++ b/drivers/block/xen-blkback/xenbus.c @@ -492,6 +492,7 @@ static int xen_vbd_create(struct xen_blkif *blkif, blkif_vdev_t handle, static int xen_blkbk_remove(struct xenbus_device *dev) { struct backend_info *be = dev_get_drvdata(&dev->dev); + unsigned long flags; pr_debug("%s %p %d\n", __func__, dev, dev->otherend_id); @@ -504,6 +505,7 @@ static int xen_blkbk_remove(struct xenbus_device *dev) be->backend_watch.node = NULL; } + spin_lock_irqsave(&dev->reclaim_lock, flags); dev_set_drvdata(&dev->dev, NULL); if (be->blkif) { @@ -512,6 +514,7 @@ static int xen_blkbk_remove(struct xenbus_device *dev) /* Put the reference we set in xen_blkif_alloc(). */ xen_blkif_put(be->blkif); } + spin_unlock_irqrestore(&dev->reclaim_lock, flags); return 0; } @@ -597,6 +600,7 @@ static int xen_blkbk_probe(struct xenbus_device *dev, int err; struct backend_info *be = kzalloc(sizeof(struct backend_info), GFP_KERNEL); + unsigned long flags; /* match the pr_debug in xen_blkbk_remove */ pr_debug("%s %p %d\n", __func__, dev, dev->otherend_id); @@ -607,6 +611,7 @@ static int xen_blkbk_probe(struct xenbus_device *dev, return -ENOMEM; } be->dev = dev; + spin_lock_irqsave(&dev->reclaim_lock, flags); dev_set_drvdata(&dev->dev, be); be->blkif = xen_blkif_alloc(dev->otherend_id); @@ -614,8 +619,10 @@ static int xen_blkbk_probe(struct xenbus_device *dev, err = PTR_ERR(be->blkif); be->blkif = NULL; xenbus_dev_fatal(dev, err, "creating block interface"); + spin_unlock_irqrestore(&dev->reclaim_lock, flags); goto fail; } + spin_unlock_irqrestore(&dev->reclaim_lock, flags); err = xenbus_printf(XBT_NIL, dev->nodename, "feature-max-indirect-segments", "%u", @@ -838,6 +845,10 @@ static void reclaim_memory(struct xenbus_device *dev) { struct backend_info *be = dev_get_drvdata(&dev->dev); + /* Device is registered but not probed yet */ + if (!be) + return; + be->blkif->buffer_squeeze_end = jiffies + msecs_to_jiffies(buffer_squeeze_duration_ms); } -- 2.17.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.5 required=3.0 tests=DKIM_ADSP_ALL,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 74552C43603 for ; Tue, 17 Dec 2019 16:09:21 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 4516421582 for ; Tue, 17 Dec 2019 16:09:21 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=amazon.com header.i=@amazon.com header.b="EkarZcfb" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4516421582 Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=amazon.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1ihFPL-0006ER-1Z; Tue, 17 Dec 2019 16:09:11 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1ihFPJ-0006E4-DH for xen-devel@lists.xenproject.org; Tue, 17 Dec 2019 16:09:09 +0000 X-Inumbo-ID: 8dbaf349-20e7-11ea-8f0d-12813bfff9fa Received: from smtp-fw-6001.amazon.com (unknown [52.95.48.154]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 8dbaf349-20e7-11ea-8f0d-12813bfff9fa; Tue, 17 Dec 2019 16:09:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1576598949; x=1608134949; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=NVFC9qV2eoj93ZmYEaKEr4kRRmxcwtF4qCgUA1XgM8c=; b=EkarZcfbcLJiis14U3PlfKnn6WCG2T4H2I9FImCZfSU72ll8FOptUeAg mP0bBhdKvzCEULJS3p7ITdWfwM8+JtZxucLXEksFFu4CXpfawlJyY9c6q 7m022sikd171xcVfcxZu2Fepb5WeUA/VBdjZoXb2vs4DzevMz9NlbqN/G s=; IronPort-SDR: aRO1wLh9GqAmNNqsU3pay3V9ZmFMs4xiqfcPlG864PHeqR5P2dbee9CuQQFkIOZkbpvnzYiCR+ QfjSy1l0Ljog== X-IronPort-AV: E=Sophos;i="5.69,326,1571702400"; d="scan'208";a="9472487" Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO email-inbound-relay-2b-55156cd4.us-west-2.amazon.com) ([10.43.8.6]) by smtp-border-fw-out-6001.iad6.amazon.com with ESMTP; 17 Dec 2019 16:09:08 +0000 Received: from EX13MTAUEA002.ant.amazon.com (pdx4-ws-svc-p6-lb7-vlan2.pdx.amazon.com [10.170.41.162]) by email-inbound-relay-2b-55156cd4.us-west-2.amazon.com (Postfix) with ESMTPS id 7C933A21FC; Tue, 17 Dec 2019 16:09:06 +0000 (UTC) Received: from EX13D31EUA001.ant.amazon.com (10.43.165.15) by EX13MTAUEA002.ant.amazon.com (10.43.61.77) with Microsoft SMTP Server (TLS) id 15.0.1236.3; Tue, 17 Dec 2019 16:09:05 +0000 Received: from u886c93fd17d25d.ant.amazon.com (10.43.161.179) by EX13D31EUA001.ant.amazon.com (10.43.165.15) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Tue, 17 Dec 2019 16:09:00 +0000 From: SeongJae Park To: , , , Date: Tue, 17 Dec 2019 17:07:46 +0100 Message-ID: <20191217160748.693-5-sjpark@amazon.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191217160748.693-1-sjpark@amazon.com> References: <20191217160748.693-1-sjpark@amazon.com> MIME-Version: 1.0 X-Originating-IP: [10.43.161.179] X-ClientProxiedBy: EX13d09UWC002.ant.amazon.com (10.43.162.102) To EX13D31EUA001.ant.amazon.com (10.43.165.15) Precedence: Bulk Subject: [Xen-devel] [PATCH v11 4/6] xen/blkback: Protect 'reclaim_memory()' with 'reclaim_lock' X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: linux-block@vger.kernel.org, sjpark@amazon.com, pdurrant@amazon.com, SeongJae Park , linux-kernel@vger.kernel.org, sj38.park@gmail.com, xen-devel@lists.xenproject.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" RnJvbTogU2VvbmdKYWUgUGFyayA8c2pwYXJrQGFtYXpvbi5kZT4KClRoZSAncmVjbGFpbV9tZW1v cnkoKScgY2FsbGJhY2sgb2YgYmxrYmFjayBjb3VsZCByYWNlIHdpdGgKJ3hlbl9ibGtia19wcm9i ZSgpJyBhbmQgJ3hlbl9ibGtia19yZW1vdmUoKScuICBJbiB0aGUgY2FzZSwgaW5jb21wbGV0ZWx5 CmxpbmtlZCAnYmFja2VuZF9pbmZvJyBhbmQgJ2Jsa2lmJyBtaWdodCBiZSBleHBvc2VkIHRvIHRo ZSBjYWxsYmFjaywgdGh1cwpyZXN1bHQgaW4gYmFkIHJlc3VsdHMgaW5jbHVkaW5nIE5VTEwgZGVy ZWZlcmVuY2UuICBUaGlzIGNvbW1pdCBmaXhlcyB0aGUKcHJvYmxlbSBieSBhcHBseWluZyB0aGUg J3JlY2xhaW1fbG9jaycgcHJvdGVjdGlvbiB0byB0aG9zZS4KCk5vdGUgdGhhdCB0aGlzIGNvbW1p dCBpcyBzZXBhcmF0ZWQgZm9yIHJldmlldyBwdXJwb3NlIG9ubHkuICBBcyB0aGUKcHJldmlvdXMg Y29tbWl0IG1pZ2h0IHJlc3VsdCBpbiByYWNlIGNvbmRpdGlvbiBhbmQgbWlnaHQgbWFrZSBiaXNl Y3QKY29uZnVzZSwgcGxlYXNlIHNxdWFzaCB0aGlzIGNvbW1pdCBpbnRvIHByZXZpb3VzIGNvbW1p dCBpZiBwb3NzaWJsZS4KClNpZ25lZC1vZmYtYnk6IFNlb25nSmFlIFBhcmsgPHNqcGFya0BhbWF6 b24uZGU+CgotLS0KIGRyaXZlcnMvYmxvY2sveGVuLWJsa2JhY2sveGVuYnVzLmMgfCAxMSArKysr KysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9k cml2ZXJzL2Jsb2NrL3hlbi1ibGtiYWNrL3hlbmJ1cy5jIGIvZHJpdmVycy9ibG9jay94ZW4tYmxr YmFjay94ZW5idXMuYwppbmRleCA0ZjZlYTRmZWNhNzkuLjIwMDQ1ODI3YTM5MSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ibG9jay94ZW4tYmxrYmFjay94ZW5idXMuYworKysgYi9kcml2ZXJzL2Jsb2Nr L3hlbi1ibGtiYWNrL3hlbmJ1cy5jCkBAIC00OTIsNiArNDkyLDcgQEAgc3RhdGljIGludCB4ZW5f dmJkX2NyZWF0ZShzdHJ1Y3QgeGVuX2Jsa2lmICpibGtpZiwgYmxraWZfdmRldl90IGhhbmRsZSwK IHN0YXRpYyBpbnQgeGVuX2Jsa2JrX3JlbW92ZShzdHJ1Y3QgeGVuYnVzX2RldmljZSAqZGV2KQog ewogCXN0cnVjdCBiYWNrZW5kX2luZm8gKmJlID0gZGV2X2dldF9kcnZkYXRhKCZkZXYtPmRldik7 CisJdW5zaWduZWQgbG9uZyBmbGFnczsKIAogCXByX2RlYnVnKCIlcyAlcCAlZFxuIiwgX19mdW5j X18sIGRldiwgZGV2LT5vdGhlcmVuZF9pZCk7CiAKQEAgLTUwNCw2ICs1MDUsNyBAQCBzdGF0aWMg aW50IHhlbl9ibGtia19yZW1vdmUoc3RydWN0IHhlbmJ1c19kZXZpY2UgKmRldikKIAkJYmUtPmJh Y2tlbmRfd2F0Y2gubm9kZSA9IE5VTEw7CiAJfQogCisJc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+ cmVjbGFpbV9sb2NrLCBmbGFncyk7CiAJZGV2X3NldF9kcnZkYXRhKCZkZXYtPmRldiwgTlVMTCk7 CiAKIAlpZiAoYmUtPmJsa2lmKSB7CkBAIC01MTIsNiArNTE0LDcgQEAgc3RhdGljIGludCB4ZW5f YmxrYmtfcmVtb3ZlKHN0cnVjdCB4ZW5idXNfZGV2aWNlICpkZXYpCiAJCS8qIFB1dCB0aGUgcmVm ZXJlbmNlIHdlIHNldCBpbiB4ZW5fYmxraWZfYWxsb2MoKS4gKi8KIAkJeGVuX2Jsa2lmX3B1dChi ZS0+YmxraWYpOwogCX0KKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPnJlY2xhaW1fbG9j aywgZmxhZ3MpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC01OTcsNiArNjAwLDcgQEAgc3RhdGljIGlu dCB4ZW5fYmxrYmtfcHJvYmUoc3RydWN0IHhlbmJ1c19kZXZpY2UgKmRldiwKIAlpbnQgZXJyOwog CXN0cnVjdCBiYWNrZW5kX2luZm8gKmJlID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGJhY2tlbmRf aW5mbyksCiAJCQkJCSAgR0ZQX0tFUk5FTCk7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKIAogCS8q IG1hdGNoIHRoZSBwcl9kZWJ1ZyBpbiB4ZW5fYmxrYmtfcmVtb3ZlICovCiAJcHJfZGVidWcoIiVz ICVwICVkXG4iLCBfX2Z1bmNfXywgZGV2LCBkZXYtPm90aGVyZW5kX2lkKTsKQEAgLTYwNyw2ICs2 MTEsNyBAQCBzdGF0aWMgaW50IHhlbl9ibGtia19wcm9iZShzdHJ1Y3QgeGVuYnVzX2RldmljZSAq ZGV2LAogCQlyZXR1cm4gLUVOT01FTTsKIAl9CiAJYmUtPmRldiA9IGRldjsKKwlzcGluX2xvY2tf aXJxc2F2ZSgmZGV2LT5yZWNsYWltX2xvY2ssIGZsYWdzKTsKIAlkZXZfc2V0X2RydmRhdGEoJmRl di0+ZGV2LCBiZSk7CiAKIAliZS0+YmxraWYgPSB4ZW5fYmxraWZfYWxsb2MoZGV2LT5vdGhlcmVu ZF9pZCk7CkBAIC02MTQsOCArNjE5LDEwIEBAIHN0YXRpYyBpbnQgeGVuX2Jsa2JrX3Byb2JlKHN0 cnVjdCB4ZW5idXNfZGV2aWNlICpkZXYsCiAJCWVyciA9IFBUUl9FUlIoYmUtPmJsa2lmKTsKIAkJ YmUtPmJsa2lmID0gTlVMTDsKIAkJeGVuYnVzX2Rldl9mYXRhbChkZXYsIGVyciwgImNyZWF0aW5n IGJsb2NrIGludGVyZmFjZSIpOworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPnJlY2xh aW1fbG9jaywgZmxhZ3MpOwogCQlnb3RvIGZhaWw7CiAJfQorCXNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJmRldi0+cmVjbGFpbV9sb2NrLCBmbGFncyk7CiAKIAllcnIgPSB4ZW5idXNfcHJpbnRmKFhC VF9OSUwsIGRldi0+bm9kZW5hbWUsCiAJCQkgICAgImZlYXR1cmUtbWF4LWluZGlyZWN0LXNlZ21l bnRzIiwgIiV1IiwKQEAgLTgzOCw2ICs4NDUsMTAgQEAgc3RhdGljIHZvaWQgcmVjbGFpbV9tZW1v cnkoc3RydWN0IHhlbmJ1c19kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgYmFja2VuZF9pbmZvICpi ZSA9IGRldl9nZXRfZHJ2ZGF0YSgmZGV2LT5kZXYpOwogCisJLyogRGV2aWNlIGlzIHJlZ2lzdGVy ZWQgYnV0IG5vdCBwcm9iZWQgeWV0ICovCisJaWYgKCFiZSkKKwkJcmV0dXJuOworCiAJYmUtPmJs a2lmLT5idWZmZXJfc3F1ZWV6ZV9lbmQgPSBqaWZmaWVzICsKIAkJbXNlY3NfdG9famlmZmllcyhi dWZmZXJfc3F1ZWV6ZV9kdXJhdGlvbl9tcyk7CiB9Ci0tIAoyLjE3LjEKCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0 Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qu b3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs