Received: by 2002:a05:6a10:e82a:0:0:0:0 with SMTP id gk42csp67459pxb; Fri, 15 Jan 2021 06:06:30 -0800 (PST) X-Google-Smtp-Source: ABdhPJxOz4s+n0N9xzE3oyN06CXQoGkE+vfwKnoXWLaoj5+8MgAhu4Slxo1Q/us4EGhQJ6Ja5/+C X-Received: by 2002:a05:6402:65a:: with SMTP id u26mr4285849edx.372.1610719590201; Fri, 15 Jan 2021 06:06:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1610719590; cv=none; d=google.com; s=arc-20160816; b=eMH9u7tmQeEI1jiTZIcCK2E3kLXBqYFqgZbJJrq5XUgAu91JO1KIy+UsChIeXbS+yZ AnVShcdS12bVMaqiT2g3D937VUtVgFzCz8S6DQYdvGuLr4o0zlyi4XIk+qoPqQdu3ZP9 goTuoLzbL8H3O1/afGRG7j4y3lHZE7UyQhxDwdaxuQq15aOspXm/fccqDQxQrQxZGMPl +1NU6gx1ecR31NmIEmaoJZaXj/fKzoaULatehD8gMvCsTB7fPHGCQrg/z0E9S8a07aw3 9gBWGSabax5ayrf7Zp98cWev6vHp80YV9g9bDIs9NJ7S6MXNNy0q9TqnnNbSPG2CoXP2 IwlQ== 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=BvQ70dhce4kxItaPjGS90KL/Tl/xCqV5rnfXoeOdY6Q=; b=kEcT5qpV3HYCYdiNb8MeTAUNjbzaF8lJI9y50e255B4O7CIgPCzZWRCYw9qMOkpvKQ CapPz4JLma49BoVWYe7u8aphlVOPEGh1s/OTWP/nZwzUyPLjceEWUUr/Ppj2NUUkjE4Q ixw/wgRh9M6i8bC85+boJLl95G/SL0J4TtWiWHu/n2dnzfgERuzBM0xVc7DH2UjJf+k/ lll6XWJD2+kfLmzxayGqSdU4QQr4Gd3dhriGbXaYl/4BAI/cTcwM9J/MXcwwJ2gfy8f8 WSwUIIqRqLhFh05cJ4l7ov0X5/ku2hILb3J/IqYxnIrncDwpMyK+4wDiW5+rU+l3xM78 bO9g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=iNs2rix5; 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 ho43si3558843ejc.421.2021.01.15.06.06.06; Fri, 15 Jan 2021 06:06:30 -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=iNs2rix5; 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 S1732105AbhAOOFS (ORCPT + 99 others); Fri, 15 Jan 2021 09:05:18 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58978 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732000AbhAOOFR (ORCPT ); Fri, 15 Jan 2021 09:05:17 -0500 Received: from mail-qk1-x735.google.com (mail-qk1-x735.google.com [IPv6:2607:f8b0:4864:20::735]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3C92EC061757 for ; Fri, 15 Jan 2021 06:04:37 -0800 (PST) Received: by mail-qk1-x735.google.com with SMTP id 19so11685805qkm.8 for ; Fri, 15 Jan 2021 06:04:37 -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=BvQ70dhce4kxItaPjGS90KL/Tl/xCqV5rnfXoeOdY6Q=; b=iNs2rix5PE/9M6DZaugvLM5dZTUu/qXgWiUJUEOp8LeJM7JHBO78YEaxojNu3nLj7w JBO4+iOHLKp6SJtHmhYK3TTKBjtg5HiyoNl6sjFxpcLYJQRvbfGbyjdXRk/o6CNbw/VW mtNOIlxRE9VmM3k7cFleLno1hAjUSBROFIQmASZtVV71vh7z24wSft7KKA261NNYZe0C NLmrs38ETte7qSTqfNtbH9YsMw77Kc+guNcJhHwsL6cEjVHt5x8q0n2lfPPUwZrS7xa9 G5UT8o6cI3gvO6lLmV0S9dW1nfsZqqYXqk57AtSB+ulPqzBhROp639pdFLUd6xOYPkmq 1XCg== 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=BvQ70dhce4kxItaPjGS90KL/Tl/xCqV5rnfXoeOdY6Q=; b=hgiCpFFHKpO8pyyzeQJqlCQ4XpKuCPUL+tHh66amEhQMSoPzEBC/nb86P8FdjDvl2h 3KUX3U3H5YFkOdV82WjVGkvAlrqnx+bxHHI+8DiQ5x9F/S4ZqdT24Vb9haLScpGcN0mV fqn876tGwPuBPiVQhfNER9qH40bpHq2V/jKGh9rBgeQqGWDmTq9tgwcBBlaOQFklxH/n xnoDoLAEOCZ9eIBxDiL0FGYfZq5fo5V3Ja1wJ4cwn/6PV8f3tG8H5NSrj5UNpZv6/6LG gVOPjaKr02I+zXvGb1djIA3Svy5PUHn1J71J97bQWCZdRUFDUdmzt7Hi2LJh5b7yFFig DoBg== X-Gm-Message-State: AOAM5301LQN7jMvno83XzZ7QWApjbak7/B9XY2TQ7qqLnAiuL879n8OO 6KxvihT0PrmoTHT4Ki39h0U8pSctYCHGWf7RoghCbA== X-Received: by 2002:a37:70d:: with SMTP id 13mr12162251qkh.326.1610719476289; Fri, 15 Jan 2021 06:04:36 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Alexander Potapenko Date: Fri, 15 Jan 2021 15:04:24 +0100 Message-ID: Subject: Re: [PATCH v3 12/15] kasan: fix bug detection via ksize for HW_TAGS mode To: Marco Elver Cc: Andrey Konovalov , Andrew Morton , Catalin Marinas , Vincenzo Frascino , Dmitry Vyukov , Will Deacon , Andrey Ryabinin , Peter Collingbourne , Evgenii Stepanov , Branislav Rankov , Kevin Brodsky , kasan-dev , Linux ARM , Linux Memory Management List , LKML Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Jan 15, 2021 at 2:18 PM Marco Elver wrote: > > On Thu, Jan 14, 2021 at 08:36PM +0100, Andrey Konovalov wrote: > > The currently existing kasan_check_read/write() annotations are intended > > to be used for kernel modules that have KASAN compiler instrumentation > > disabled. Thus, they are only relevant for the software KASAN modes that > > rely on compiler instrumentation. > > > > However there's another use case for these annotations: ksize() checks > > that the object passed to it is indeed accessible before unpoisoning the > > whole object. This is currently done via __kasan_check_read(), which is > > compiled away for the hardware tag-based mode that doesn't rely on > > compiler instrumentation. This leads to KASAN missing detecting some > > memory corruptions. > > > > Provide another annotation called kasan_check_byte() that is available > > for all KASAN modes. As the implementation rename and reuse > > kasan_check_invalid_free(). Use this new annotation in ksize(). > > To avoid having ksize() as the top frame in the reported stack trace > > pass _RET_IP_ to __kasan_check_byte(). > > > > Also add a new ksize_uaf() test that checks that a use-after-free is > > detected via ksize() itself, and via plain accesses that happen later. > > > > Link: https://linux-review.googlesource.com/id/Iaabf771881d0f9ce1b969f2a62938e99d3308ec5 > > Signed-off-by: Andrey Konovalov > > Reviewed-by: Marco Elver Reviewed-by: Alexander Potapenko