Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp855970pxb; Thu, 28 Jan 2021 01:47:26 -0800 (PST) X-Google-Smtp-Source: ABdhPJzaDliDpNtbVeGEwBYtYNvxpHTW1OQl+JF70x/l6aldKlNGbMLAK+DoND7N20K3Ol5DRs9R X-Received: by 2002:a17:906:c1c1:: with SMTP id bw1mr10547829ejb.86.1611827246715; Thu, 28 Jan 2021 01:47:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1611827246; cv=none; d=google.com; s=arc-20160816; b=ON0ySVFPbsCMNhYPJOmljgyemMrOMweSJoK2l/+N1EzfGduTLMuaKjvdUxyGAYk4T9 IoKDIHn4cvjvgwLtW6rIJ9JrSG0ia9Gk8Ky4bfTwi4nGxbejD+2ZGw0Q+IJH4QSc7Dqe NarDoVfWFhY2nBwvUqFcyj3WXr0XXaXOCXbjWYPOhctcOs+FL4hafRRBcxnNOIkZfspo Ad7wPAMebEK3ZcL5zUfWnpA+V8NS2fe42q9xwEI1gkdsDvSXxWU4/g98AzTh8JSBasNr FeMCAmrncIdluXWPwdCJxvTo5C1Httu5kYU0yQ26uLATS6K5uJ5R/5x9TOQ4TeIIFlg8 0U9w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date; bh=jWbRz36darvqxQ5CC0U43aShoOBwVTLYpYnqNX+yn1s=; b=CZfVu2LWxZRg+fcqDtCbuQshU7cfNZnNn+otDzaQA9nG6hgsH+1IWGWmuLPT631Ac+ SkVVvDmWK2bs6jldttd5br5y2j/icpJPYkN8/hNYtFGlxYzmXgScH159KKBGrZUtJNfm pBwNmorFZWdrP/rnM3jtBUZe8TiqE4bxBspnNFK8177ZM0uvcv8tP9d3tYl1IhVxu7+R bae4sIxMFhaAINzAv6+WKitQ7sINdie9pwuYvlEpm3NT1orVd+ED2qiauJaqVCyevnWh 6oM7CJ1qokFqWZdSomf7k890z3DYFbh+5lSAGpcTOJzSpfFFeRzYe2hzMmv6Lt8seIyz 11Wg== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id t14si2163162ejx.608.2021.01.28.01.47.02; Thu, 28 Jan 2021 01:47:26 -0800 (PST) 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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231600AbhA1Jmc (ORCPT + 99 others); Thu, 28 Jan 2021 04:42:32 -0500 Received: from mx2.suse.de ([195.135.220.15]:39128 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232410AbhA1Jkq (ORCPT ); Thu, 28 Jan 2021 04:40:46 -0500 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id AE443AC97; Thu, 28 Jan 2021 09:40:04 +0000 (UTC) Date: Thu, 28 Jan 2021 10:40:04 +0100 From: Daniel Wagner To: Chao Leng Cc: linux-nvme@lists.infradead.org, Sagi Grimberg , linux-kernel@vger.kernel.org, Jens Axboe , Hannes Reinecke , Keith Busch , Christoph Hellwig Subject: Re: [PATCH v2] nvme-multipath: Early exit if no path is available Message-ID: <20210128094004.erwnszjqcxlsi2kd@beryllium.lan> References: <20210127103033.15318-1-dwagner@suse.de> <20210128075837.u5u56t23fq5gu6ou@beryllium.lan> <69575290-200e-b4a1-4269-c71e4c2cc37b@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <69575290-200e-b4a1-4269-c71e4c2cc37b@huawei.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Jan 28, 2021 at 05:18:56PM +0800, Chao Leng wrote: > It is impossible to return NULL for nvme_next_ns(head, old). block nvme0n1: no usable path - requeuing I/O block nvme0n1: no usable path - requeuing I/O block nvme0n1: no usable path - requeuing I/O block nvme0n1: no usable path - requeuing I/O block nvme0n1: no usable path - requeuing I/O block nvme0n1: no usable path - requeuing I/O BUG: kernel NULL pointer dereference, address: 0000000000000068 #PF: supervisor read access in kernel mode #PF: error_code(0x0000) - not-present page PGD 8000000ff67bc067 P4D 8000000ff67bc067 PUD ff9ac9067 PMD 0 Oops: 0000 [#1] SMP PTI CPU: 23 PID: 15759 Comm: dt.21.15 Kdump: loaded Tainted: G E 5.3.18-0.gc9fe679-default #1 SLE15-SP2 (unreleased) Hardware name: FUJITSU PRIMERGY RX2540 M2/D3289-B1, BIOS V5.0.0.11 R1.18.0 for D3289-B1x 02/06/2018 RIP: 0010:nvme_ns_head_make_request+0x1d1/0x430 [nvme_core] Code: 54 24 10 0f 84 c9 01 00 00 48 8b 54 24 10 48 83 ea 30 0f 84 ba 01 00 00 48 39 d0 0f 84 01 02 00 00 31 ff eb 05 48 39 d0 74 67 <48> 8b 72 68 83 e6 04 75 13 48 8b 72 68 83 e6 01 75 0a 48 8b 72 10 RSP: 0018:ffffa69d08017af8 EFLAGS: 00010246 RAX: ffff92f261d87800 RBX: ffff92fa555b0010 RCX: ffff92fa555bc570 RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000 RBP: 0000000000000001 R08: 0000000000001000 R09: 0000000000001000 R10: ffffa69d080179a8 R11: ffff92f264f0c1c0 R12: ffff92f264f7f000 R13: ffff92fa555b0000 R14: 0000000000000001 R15: 0000000000000000 FS: 00007f3962bae700(0000) GS:ffff92f29ffc0000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000000000000068 CR3: 0000000fd69a2002 CR4: 00000000003606e0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Call Trace: generic_make_request+0x121/0x300 ? submit_bio+0x42/0x1c0 submit_bio+0x42/0x1c0 ext4_io_submit+0x49/0x60 [ext4] ext4_writepages+0x625/0xe90 [ext4] ? do_writepages+0x4b/0xe0 ? ext4_mark_inode_dirty+0x1d0/0x1d0 [ext4] do_writepages+0x4b/0xe0 ? __generic_file_write_iter+0x192/0x1c0 ? __filemap_fdatawrite_range+0xcb/0x100 __filemap_fdatawrite_range+0xcb/0x100 ? ext4_file_write_iter+0x128/0x3c0 [ext4] file_write_and_wait_range+0x5e/0xb0 __generic_file_fsync+0x22/0xb0 ext4_sync_file+0x1f7/0x3c0 [ext4] do_fsync+0x38/0x60 __x64_sys_fsync+0x10/0x20 do_syscall_64+0x5b/0x1e0 entry_SYSCALL_64_after_hwframe+0x44/0xa9 You can't see exactly where it dies but I followed the assembly to nvme_round_robin_path(). Maybe it's not the initial nvme_next_ns(head, old) which returns NULL but nvme_next_ns() is returning NULL eventually (list_next_or_null_rcu()). And I have positive feedback, this patch fixes the above problem.