Received: by 2002:a25:683:0:0:0:0:0 with SMTP id 125csp1310866ybg; Tue, 2 Jun 2020 06:49:44 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxcX2ZzjYf3YWIoHOR2I9wka8l6EMRF+yBfh7u70AWckfBbHY2LsTiIUV4i7oVdNfnUt9D0 X-Received: by 2002:a17:906:8595:: with SMTP id v21mr12642716ejx.30.1591105784767; Tue, 02 Jun 2020 06:49:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1591105784; cv=none; d=google.com; s=arc-20160816; b=eUhHQivb8NqwAYxOU/34xIlnlXOzpAmIlrRLns3HIElWBRIFypt04nX3X86P/0p/T3 RU3PGtMiB4cGNhb7hxxzNNRvXGp1LHJi//RMMH3Z2cmtvOvQ9d6Yx6Oc9VRUktHweDxN hRS9W+g9lfmlBDf8H1T6j/zztxP28Jb+ThLD49pTBJUmftWOQEGUZ/6SD/u9xjZP+NQB NU9+BsVwCzCZsu09z1sk0tiGe331QpcA3knKjfLzXUTotkK5fIGdczq4hwOLibdHHgUL 1DsyDjtFOMsR23gRpP9/kLNm9cy2wF1coQ4/lKUdJz8Naupk43kkqFld3j7gzNhzcP/p mPFA== 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 :message-id:date:subject:cc:to:from; bh=s6CFPRuLnAPpJfn+7oq0pDy5oEOkqICbIIqN+8BKf4s=; b=ayUP3qXVN1zW40kBpshdvCO+6AsxjKs+m65EfBv5EbXUNnerkjTecZfadIfhSCd1up 9lfh5RA9W1/YpRrxFG9vX75MX1xSDGTPNnaxXC3wZ0bypV4tudKwo9V2ZCzti6+igBVs RBOoyHkuxKnCQ3eLPVT/ufMRf7EkCIw0uOcB0A5cytm8qSAEAQUhmmhYzVaC7nv0dUxF PPrLhPocsYqhJZSm9uI3m5QUEl5LrY7Z8qtbVEpOYEzBSBrqHYvbYPiBtoSJCxe3V4Px RbiohI4UVrxsqqd/iZ/3kG7d69R7erU7RSDXTaS4O8BVcGlCL6bI3izsWdv20mYwg3rn OQEw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ibm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f17si1604389edr.515.2020.06.02.06.49.14; Tue, 02 Jun 2020 06:49:44 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-ext4-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-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ibm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727769AbgFBNtA (ORCPT + 99 others); Tue, 2 Jun 2020 09:49:00 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:49594 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725940AbgFBNtA (ORCPT ); Tue, 2 Jun 2020 09:49:00 -0400 Received: from pps.filterd (m0098413.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 052Dc8MC061313; Tue, 2 Jun 2020 09:48:47 -0400 Received: from ppma03ams.nl.ibm.com (62.31.33a9.ip4.static.sl-reverse.com [169.51.49.98]) by mx0b-001b2d01.pphosted.com with ESMTP id 31d2u231f2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 02 Jun 2020 09:48:47 -0400 Received: from pps.filterd (ppma03ams.nl.ibm.com [127.0.0.1]) by ppma03ams.nl.ibm.com (8.16.0.42/8.16.0.42) with SMTP id 052DRaS3022513; Tue, 2 Jun 2020 13:47:34 GMT Received: from b06cxnps4075.portsmouth.uk.ibm.com (d06relay12.portsmouth.uk.ibm.com [9.149.109.197]) by ppma03ams.nl.ibm.com with ESMTP id 31bf47x4rc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 02 Jun 2020 13:47:34 +0000 Received: from d06av22.portsmouth.uk.ibm.com (d06av22.portsmouth.uk.ibm.com [9.149.105.58]) by b06cxnps4075.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 052DlWCT3342728 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 2 Jun 2020 13:47:32 GMT Received: from d06av22.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 1CFD54C04A; Tue, 2 Jun 2020 13:47:32 +0000 (GMT) Received: from d06av22.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 9945E4C04E; Tue, 2 Jun 2020 13:47:28 +0000 (GMT) Received: from localhost.localdomain.com (unknown [9.85.91.137]) by d06av22.portsmouth.uk.ibm.com (Postfix) with ESMTP; Tue, 2 Jun 2020 13:47:28 +0000 (GMT) From: Ritesh Harjani To: linux-ext4@vger.kernel.org Cc: linux-fsdevel@vger.kernel.org, Jan Kara , tytso@mit.edu, linux-kernel@vger.kernel.org, adilger.kernel@dilger.ca, sfr@canb.auug.org.au, linux-next@vger.kernel.org, syzkaller-bugs@googlegroups.com, syzbot+82f324bb69744c5f6969@syzkaller.appspotmail.com, Ritesh Harjani Subject: [PATCHv5 1/1] ext4: mballoc: Use raw_cpu_ptr instead of this_cpu_ptr Date: Tue, 2 Jun 2020 19:17:21 +0530 Message-Id: <20200602134721.18211-1-riteshh@linux.ibm.com> X-Mailer: git-send-email 2.21.3 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.216,18.0.687 definitions=2020-06-02_13:2020-06-02,2020-06-02 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 cotscore=-2147483648 malwarescore=0 phishscore=0 clxscore=1015 bulkscore=0 adultscore=0 lowpriorityscore=0 suspectscore=1 spamscore=0 mlxscore=0 mlxlogscore=993 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2004280000 definitions=main-2006020093 Sender: linux-ext4-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org It doesn't really matter in ext4_mb_new_blocks() about whether the code is rescheduled on any other cpu due to preemption. Because we care about discard_pa_seq only when the block allocation fails and then too we add the seq counter of all the cpus against the initial sampled one to check if anyone has freed any blocks while we were doing allocation. So just use raw_cpu_ptr instead of this_cpu_ptr to avoid this BUG. BUG: using smp_processor_id() in preemptible [00000000] code: syz-fuzzer/6927 caller is ext4_mb_new_blocks+0xa4d/0x3b70 fs/ext4/mballoc.c:4711 CPU: 1 PID: 6927 Comm: syz-fuzzer Not tainted 5.7.0-next-20200602-syzkaller #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011 Call Trace: __dump_stack lib/dump_stack.c:77 [inline] dump_stack+0x18f/0x20d lib/dump_stack.c:118 check_preemption_disabled+0x20d/0x220 lib/smp_processor_id.c:48 ext4_mb_new_blocks+0xa4d/0x3b70 fs/ext4/mballoc.c:4711 ext4_ext_map_blocks+0x201b/0x33e0 fs/ext4/extents.c:4244 ext4_map_blocks+0x4cb/0x1640 fs/ext4/inode.c:626 ext4_getblk+0xad/0x520 fs/ext4/inode.c:833 ext4_bread+0x7c/0x380 fs/ext4/inode.c:883 ext4_append+0x153/0x360 fs/ext4/namei.c:67 ext4_init_new_dir fs/ext4/namei.c:2757 [inline] ext4_mkdir+0x5e0/0xdf0 fs/ext4/namei.c:2802 vfs_mkdir+0x419/0x690 fs/namei.c:3632 do_mkdirat+0x21e/0x280 fs/namei.c:3655 do_syscall_64+0x60/0xe0 arch/x86/entry/common.c:359 entry_SYSCALL_64_after_hwframe+0x44/0xa9 Signed-off-by: Ritesh Harjani Reported-by: syzbot+82f324bb69744c5f6969@syzkaller.appspotmail.com --- fs/ext4/mballoc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c index a9083113a8c0..b79b32dbe3ea 100644 --- a/fs/ext4/mballoc.c +++ b/fs/ext4/mballoc.c @@ -4708,7 +4708,7 @@ ext4_fsblk_t ext4_mb_new_blocks(handle_t *handle, } ac->ac_op = EXT4_MB_HISTORY_PREALLOC; - seq = *this_cpu_ptr(&discard_pa_seq); + seq = *raw_cpu_ptr(&discard_pa_seq); if (!ext4_mb_use_preallocated(ac)) { ac->ac_op = EXT4_MB_HISTORY_ALLOC; ext4_mb_normalize_request(ac, ar); -- 2.21.3