Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp6270698pxb; Tue, 16 Feb 2021 23:13:47 -0800 (PST) X-Google-Smtp-Source: ABdhPJwvw/3hRU/YQLSBolREz+Mg8mdJySLpONokh6G/R2ygQ0xrzSPn004vEYxoWAQDqZKxJV2p X-Received: by 2002:a17:907:75c6:: with SMTP id jl6mr23435409ejc.243.1613546026961; Tue, 16 Feb 2021 23:13:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1613546026; cv=none; d=google.com; s=arc-20160816; b=Jsm6bENHJW5hbdn9iz+f6DvbqlwSdKprIVG7vPi8AuoOwYwlyF3wB30W+bzq0nO1Fs w4j+EBIQnZGK3/J2ddTn4d42wFHsdiAzgnIokv1Zy22DrGezV+NN2CVZBZHLM6GLbMdj ct8Rqw8hzFYH/CIXMolGNsreIn7rHZbnuA6rGMIAbHAMW5BkaIJirIzf0xP1Y1EPUCmC it9p/TnJiq16ehLYDZpPar7tqpyEiv8F+dL6kOjcVtswV7AfWUGycArPYrq4+6jzMHT8 +HvZRlt4iCvzcySGHwrqyFlsRpVxs6ZhcOFNQBOoZ788Q4FlmUfNw3s4Iq4oPCIvhpaw L0Wg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=ugTQaAHGFRc8CPFFaoP0oTLZDH3L7/TR0bJ/954bT1w=; b=fL8n59BHCdUmk2AWLqKOT3s+fgi8KW0r84f4+JFAsOVK7ws7O45fYe0baRFymY2zJd SCRQ8wjOzNudhLjZBWLJPxPOgJbCogFiVvvzWq07Lcqzye9V4bwd59xVCOdFKedxLQ1F TLp1sK7orw3ADhYiXOVAKZ4I1K2YZFQmvAwWcvMa8mbMHixiPm4m096NcdghDiSK4HYn HPyjJT2wqANIi/AbGmqsm02UwZGvzh9+TN7K8sViY+vbPiRljiQhXVOfxlj35AVYpBNP Fj/zyGqccO8oBeS2+Zvu2yAEVSPPxr1ArUIkgOM4g31VqSk9gnC5NJ2U6h37VDTw3pDB qh8g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=v8HGgPjV; 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; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id mb25si1070332ejb.519.2021.02.16.23.13.10; Tue, 16 Feb 2021 23:13:46 -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; dkim=pass header.i=@google.com header.s=20161025 header.b=v8HGgPjV; 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; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231476AbhBQGiB (ORCPT + 99 others); Wed, 17 Feb 2021 01:38:01 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60808 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231441AbhBQGh6 (ORCPT ); Wed, 17 Feb 2021 01:37:58 -0500 Received: from mail-qv1-xf29.google.com (mail-qv1-xf29.google.com [IPv6:2607:f8b0:4864:20::f29]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 785DFC06174A for ; Tue, 16 Feb 2021 22:37:18 -0800 (PST) Received: by mail-qv1-xf29.google.com with SMTP id dr7so5838384qvb.1 for ; Tue, 16 Feb 2021 22:37:18 -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=ugTQaAHGFRc8CPFFaoP0oTLZDH3L7/TR0bJ/954bT1w=; b=v8HGgPjVyadQVfPmCx53Cywv+tY+/NwgMZesn4Cct7G8jWSbvOzSIGB/hxY7I+rWGA oPcjS0UokMyi6R8y8MHOZwg3JJF+o1joKHa5yfpiRZu3x83CxzklWCWA6FeIJMTnAWwa 1cjF4Jz6JHzpRx+OJw9YQp+P/pzawTcePep9dRvCNXkqQ93Db2OxFXqsn6ONhV/ZhD5h LlmUlWKOvNF0oDynmUvZ9R0CzNkbwPNwrbf4RrBCl8bFgVu/3tJJoxyj+NXRObkpv9Vz kWZpDzE7jiCSXPhk9ngfm93euWFpMKJ6F/jAnHNWbm3d3fpjYzoY5Zjx0x6kDOPhJSDe ZsqA== 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=ugTQaAHGFRc8CPFFaoP0oTLZDH3L7/TR0bJ/954bT1w=; b=jAyjw6YbWYA6pE1sZS0CqP2DI2BQqXwyTC1iZLSym3wcQWlcT8ftAOJwMxkq/oL4Sw z6jPtipAdgVPTZmEZAJV23ARzkxlVDBB6R0wkY2fQlw+0QGHjV9qMkEq5vPXCIYWLP3H RFVLH+musgy4GWv4zBbfscBlPVfYQ4wxb/jyEaIw6wnlSqUeQc7Bh32bXAyk4DkrueRC FzKr4kzhAYThocdqTPL2E2cxrHUebfxDADN/ZBgdXbwjWs1/vD3IoDm4dwH6erIgYylo H4Na3WA2yrsD1R/LoKoob/1bsNicmnvnj1/o0pPUEsazef2b4XtvQ99nHlPgKNSucpFU CMpQ== X-Gm-Message-State: AOAM532m9HlUKx2hw1es0T4SC1De+4FwMLf/aVHndlmoMhKFD6UP6i24 zzFEUjg/5jz0sFpHwF9kAu4FlFnB1k4WWRufHSwvRw== X-Received: by 2002:a0c:8304:: with SMTP id j4mr23007277qva.18.1613543837440; Tue, 16 Feb 2021 22:37:17 -0800 (PST) MIME-Version: 1.0 References: <0000000000000be4d705bb68dfa7@google.com> <20210216172817.GA14978@arm.com> <20210216180143.GB14978@arm.com> In-Reply-To: From: Dmitry Vyukov Date: Wed, 17 Feb 2021 07:37:06 +0100 Message-ID: Subject: Re: KASAN: invalid-access Write in enqueue_timer To: Catalin Marinas , Eric Dumazet Cc: "Jason A. Donenfeld" , Netdev , syzbot , Mark Brown , Kees Cook , linux-arm-kernel , LKML , Mark Rutland , mbenes@suse.cz, syzkaller-bugs , Will Deacon , Ard Biesheuvel Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Feb 16, 2021 at 7:15 PM Dmitry Vyukov wrote: > > On Tue, Feb 16, 2021 at 06:50:20PM +0100, Jason A. Donenfeld wrote: > > > On Tue, Feb 16, 2021 at 6:46 PM Jason A. Donenfeld wrote: > > > > On Tue, Feb 16, 2021 at 6:28 PM Catalin Marinas wrote: > > > > > > hlist_add_head include/linux/list.h:883 [inline] > > > > > > enqueue_timer+0x18/0xc0 kernel/time/timer.c:581 > > > > > > mod_timer+0x14/0x20 kernel/time/timer.c:1106 > > > > > > mod_peer_timer drivers/net/wireguard/timers.c:37 [inline] > > > > > > wg_timers_any_authenticated_packet_traversal+0x68/0x90 drivers/net/wireguard/timers.c:215 > > > > > > > > The line of hlist_add_head that it's hitting is: > > > > > > > > static inline void hlist_add_head(struct hlist_node *n, struct hlist_head *h) > > > > { > > > > struct hlist_node *first = h->first; > > > > WRITE_ONCE(n->next, first); > > > > if (first) > > > > > > > > So that means it's the dereferencing of h that's a problem. That comes from: > > > > > > > > static void enqueue_timer(struct timer_base *base, struct timer_list *timer, > > > > unsigned int idx, unsigned long bucket_expiry) > > > > { > > > > > > > > hlist_add_head(&timer->entry, base->vectors + idx); > > > > > > > > That means it concerns base->vectors + idx, not the timer_list object > > > > that wireguard manages. That's confusing. Could that imply that the > > > > bug is in freeing a previous timer without removing it from the timer > > > > lists, so that it winds up being in base->vectors? > > > > Good point, it's indeed likely that the timer list is messed up already, > > just an unlucky encounter in the wireguard code. > > > > > Digging around on syzkaller, it looks like there's a similar bug on > > > jbd2, concerning iptunnels's allocation: > > > > > > https://syzkaller.appspot.com/text?tag=CrashReport&x=13afb19cd00000 > > [...] > > > It might not actually be a wireguard bug? > > > > I wonder whether syzbot reported similar issues with > > CONFIG_KASAN_SW_TAGS. It shouldn't be that different from the HW_TAGS > > but at least we can rule out qemu bugs with the MTE emulation. > > +Eric I've seen some similar reports on other syzkaller instances. They all have similar alloc/free stacks, but different access stacks. This does not seem to be wireguard nor arm/mte related. It seems that something released the device prematurely, and then some innocent code gets a use-after-free.