Received: by 2002:a25:c205:0:0:0:0:0 with SMTP id s5csp2173242ybf; Mon, 2 Mar 2020 03:30:30 -0800 (PST) X-Google-Smtp-Source: APXvYqyu45GyCiPW4eEpfnsUCWyZ7Fl4G6GV1udNa3z27NWrzVLPo4pE1mMcaodOQgkzw2LxBQEy X-Received: by 2002:aca:724a:: with SMTP id p71mr11574610oic.23.1583148630707; Mon, 02 Mar 2020 03:30:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1583148630; cv=none; d=google.com; s=arc-20160816; b=W0I0C4/VH0HPMDq1irqQg/7JxSYzm3SWIvBE1T4ZUgDAwK2wHQrx20JlkmwaWgQ3hY e59MmFsF7kKhw3HSfUy1Oq3SisnVIY5MCj4+XLF1Q24K6CS4jZRNapBEgt+T1RtMqmgb VShkZ1dHhgR3v38DELk81q7n1sBWh3Mw0NJRRA58mKt7S+ZHndt5w1UQD4dAMWstVt/H VMXQySjLBE2cjMJothepCskZceX4F/6aZ0ThkuYYk0eYBefRtrilfPghLEiI/cj+nZ88 8l0QA9FshLXiWwoC7HVEXdZ7E+uGETfsmRTPt2JQ+BTHGGhAWiEs39UeWaNZU8fMV2Yo V3yQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=h0Fuv3v/Qpfe7SqDVP/B7XBJ3fTGbrxdPJa80K2tHaI=; b=ghP1yekW3hOhzYpmag+/Wuwu/4FaB1VXc3vDzvQ08LkvRUw3oLITXpE/A80N+Qm5sK yWnFXFitwLwq1qNNWgNUInL7ePwpv7r0e0sYSqHPz8bYuMNVrapDynAVdr3+huGC5Kfa q+4fjvaEa6cM9Yui4aXu00W4nSh3pLzrdoYkMTt47jFgboGTTlmUKT7vF8ivCMss6lie r0ivJbekmkDf/igGs2T008WXG5iaXO2ypUso7FUqEPmWG5iY99/4EQvOJcfFiQcpnNjd AGhUFPRSCPTEKe4BTkQZNMzhZ8OYiB7PuurLI/aBhfxDdsf3PIotVPnhV6hVlxZfkBdE cphA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=Sazxwk4o; 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; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l6si6314690otk.134.2020.03.02.03.30.17; Mon, 02 Mar 2020 03:30:30 -0800 (PST) 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=@google.com header.s=20161025 header.b=Sazxwk4o; 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; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726979AbgCBL3y (ORCPT + 99 others); Mon, 2 Mar 2020 06:29:54 -0500 Received: from mail-qk1-f195.google.com ([209.85.222.195]:34190 "EHLO mail-qk1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725996AbgCBL3y (ORCPT ); Mon, 2 Mar 2020 06:29:54 -0500 Received: by mail-qk1-f195.google.com with SMTP id 11so9637384qkd.1 for ; Mon, 02 Mar 2020 03:29:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=h0Fuv3v/Qpfe7SqDVP/B7XBJ3fTGbrxdPJa80K2tHaI=; b=Sazxwk4oSdJXcL6gVo+VQCHI1bZZzad9P2BpI0a567CcOw8uHu6FGoU5FmFIjRIs1j jszO10ynRnrcbC1zmg6noV1N/C6oewlnt8ahlmMyxcRX3hdA5nSYxiNVyv+cEwuSd1qM SPfESMs33MMYlLSJWnQ51+CevBgTlzoke11tgZJFbQdmieiKDYXB+3VgFoxPL95o+8aN DFZr7pUauaw2YU13h8IsfFQcJou7qu64h+0F0gV7DcoUkGE7M5Q7sdpOdjgzllIbT8aX N/49GJ3gow2Ix83dy+3nA9iaSC6nwZMgNbWE3oTrPAEO2n+Hr3SYP49HmVnAoCgmxQ63 IW3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=h0Fuv3v/Qpfe7SqDVP/B7XBJ3fTGbrxdPJa80K2tHaI=; b=WWGA7Qag7vQofWOFup3fssViMWpgCZKj7qof6qHRl3Km2c43y/sqXSlr4KodP1YfTV w7ZYyhzM7zHR3b8dVTwThMWDxSXQlGqxdaJZwEcfSv2zgC1EhyeQyfsM3MIGQADJdrv6 lX4D9lUT8FdnCS43OqSL4lvPhLr3DXcRyePtnRiEQafvHF3xym93/7/JDbij/pvyvFje R+Ch+ESMjB4qp7eo7wbpnA8Ugud447PghSv7PsrL/SSTgaWX2VBFGqJKxd45sq3QWWvn p9iMgGywrEXBIFAIsmwxa+1Ehh4RyZnqsfXOICknF9cLJVcs9naUCZFtGze5yGcp55c4 UiQw== X-Gm-Message-State: APjAAAV2m5rvWMr6UyAVefvUz1L6u3ImeroHUQi2EK/ZXN/sIyF4TbXB h3EF6yAmWaiq9f+iAT0TmGneCV1dNC1T50tzd0eavfIhgyg= X-Received: by 2002:ae9:e003:: with SMTP id m3mr16126112qkk.250.1583148592977; Mon, 02 Mar 2020 03:29:52 -0800 (PST) MIME-Version: 1.0 References: <000000000000d3e319059fcfdc98@google.com> In-Reply-To: From: Dmitry Vyukov Date: Mon, 2 Mar 2020 12:29:41 +0100 Message-ID: Subject: Re: WARNING: bad unlock balance in ovl_llseek To: Amir Goldstein Cc: syzbot , linux-kernel , overlayfs , Miklos Szeredi , Miklos Szeredi , syzkaller-bugs Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Mar 2, 2020 at 12:10 PM Amir Goldstein wrote: > > On Sun, Mar 1, 2020 at 9:13 PM syzbot > wrote: > > > > Hello, > > > > syzbot found the following crash on: > > > > HEAD commit: f8788d86 Linux 5.6-rc3 > > git tree: upstream > > console output: https://syzkaller.appspot.com/x/log.txt?x=13c5f8f9e00000 > > kernel config: https://syzkaller.appspot.com/x/.config?x=5d2e033af114153f > > dashboard link: https://syzkaller.appspot.com/bug?extid=66a9752fa927f745385e > > compiler: clang version 10.0.0 (https://github.com/llvm/llvm-project/ c2443155a0fb245c8f17f2c1c72b6ea391e86e81) > > syz repro: https://syzkaller.appspot.com/x/repro.syz?x=131d9a81e00000 > > C reproducer: https://syzkaller.appspot.com/x/repro.c?x=14117a81e00000 > > > > Dmitry, > > There is something strange about the C repro. > It passes an invalid address for the first arg of mount syscall: > > syscall(__NR_mount, 0x400000ul, 0x20000000ul, 0x20000080ul, 0ul, > 0x20000100ul); > > With this address mount syscall returns -EFAULT on my system. > I fixed this manually, but repro did not trigger the reported bug on my system. Hi Amir, This is not strange in the context of fuzzer, it's goal is to pass random data. Generally if it says 0x400000ul, that's what it is, don't fix it, or you are running a different program that may not reproduce the bug. If syzbot attaches a reproducer, the bug was triggered by precisely this program. The reason why it passes non-pointers here is we think the src argument of overlay mount is unused: https://github.com/google/syzkaller/blob/4a4e0509de520c7139ca2b5606712cbadc550db2/sys/linux/filesystem.txt#L12 If it's not true, it needs to be fixed (or almost all overlay mounts fail with EFAULT during fuzzing). > > The bug was bisected to: > > > > commit b1f9d3858f724ed45b279b689fb5b400d91352e3 > > Author: Amir Goldstein > > Date: Sat Dec 21 09:42:29 2019 +0000 > > > > ovl: use ovl_inode_lock in ovl_llseek() > > > > bisection log: https://syzkaller.appspot.com/x/bisect.txt?x=16ff3bede00000 > > final crash: https://syzkaller.appspot.com/x/report.txt?x=15ff3bede00000 > > console output: https://syzkaller.appspot.com/x/log.txt?x=11ff3bede00000 > > > > IMPORTANT: if you fix the bug, please add the following tag to the commit: > > Reported-by: syzbot+66a9752fa927f745385e@syzkaller.appspotmail.com > > Fixes: b1f9d3858f72 ("ovl: use ovl_inode_lock in ovl_llseek()") > > > > ===================================== > > WARNING: bad unlock balance detected! > > 5.6.0-rc3-syzkaller #0 Not tainted > > ------------------------------------- > > syz-executor194/8947 is trying to release lock (&ovl_i_lock_key[depth]) at: > > [] ovl_inode_unlock fs/overlayfs/overlayfs.h:328 [inline] > > [] ovl_llseek+0x215/0x2c0 fs/overlayfs/file.c:193 > > but there are no more locks to release! > > > > This is strange. I don't see how that can happen nor how my change would > have caused this regression. If anything, the lock chance may have brought > a bug in stack file ops to light, but don't see the bug. > > The repro is multi-threaded but when I ran the repro, a single thread did: > - open lower file (pre copy up) > - lchown file (copy up) > - llseek the open file (so llseek is on a temporary ovl_open_realfile()) > > Perhaps when bug was triggered ops above were executed by different > threads? Perfectly possible. > Dmitry, I may have asked this before - how hard would it be to attach an > strace of the repro to a bug report? This is tracked in https://github.com/google/syzkaller/issues/197 but no progress so far. What exactly were the main pain points in this case? But note that strace is not atomic with actual execution, so it may lead you down even worse rabbit hole...