From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-0.9 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5C9D7C433E1 for ; Tue, 19 May 2020 16:33:28 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 22B482084C for ; Tue, 19 May 2020 16:33:28 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=linux-foundation.org header.i=@linux-foundation.org header.b="KITgpUd5" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 22B482084C Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=linux-foundation.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id A61CF900003; Tue, 19 May 2020 12:33:27 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9ECF0900002; Tue, 19 May 2020 12:33:27 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8B3C6900003; Tue, 19 May 2020 12:33:27 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0024.hostedemail.com [216.40.44.24]) by kanga.kvack.org (Postfix) with ESMTP id 70696900002 for ; Tue, 19 May 2020 12:33:27 -0400 (EDT) Received: from smtpin27.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id 331665008 for ; Tue, 19 May 2020 16:33:27 +0000 (UTC) X-FDA: 76834014054.27.skirt14_fcd56b13b19 X-HE-Tag: skirt14_fcd56b13b19 X-Filterd-Recvd-Size: 5141 Received: from mail-lj1-f195.google.com (mail-lj1-f195.google.com [209.85.208.195]) by imf18.hostedemail.com (Postfix) with ESMTP for ; Tue, 19 May 2020 16:33:26 +0000 (UTC) Received: by mail-lj1-f195.google.com with SMTP id v16so395904ljc.8 for ; Tue, 19 May 2020 09:33:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-foundation.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=TFvy+u64rADS0X9wXPVDcnjojb1U9iWCN3n097gO97s=; b=KITgpUd5bP2WD+I3Ft3adLmt6MH7MS4MFJexni61RXcXlzD9Gqjwa8Lmdkq9TYyfqS KL4aFjs9x04ZYvGYs2IsxZG5dgyhwKLIBJrjoMKhrn6xZPweQeBnKjN1RmntmQCr96TY jycjBR645lH/xqU7rOHokwZ9wup3usfS+9Z3A= 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=TFvy+u64rADS0X9wXPVDcnjojb1U9iWCN3n097gO97s=; b=KfFHnXK9Pxu67y4O/y7/G9gXx8Is95MJKLnoq0FVnD37chbXcZUlg+Z0y1Hl4gcaDv ahcA2KDKHsaHatQTW3EUPJvw4BulqeYitCZ0gIIT5tl9D5CksP/YktnUIuBlYJLawRUH CeRW3043CHaJ8JH6BEranJgwwsIaCIsQNvmZL36qoFFw2kfS8gh3v/VctOL+wTBZ9SSO hkuPPKQG7cwU9AV86jWrpJtvS1uXZrXYcw928QPcHI19FFgou0tJGPBKCgORn+NsKoT6 Di5O4AzXlQFsjOdEfU2+wJtbmqJe/g2CKaXcNWdpqFtw73BtYD1Ophb8EcMKrUYdt0qo W3sg== X-Gm-Message-State: AOAM532djqi5xRE4b4kG9d4LhAjXCGJo03UBk5WC7mLOqiSjpWnEUjrR J8kofQwAwDd5sWjafop5UEqlzwCPFIs= X-Google-Smtp-Source: ABdhPJz+uzyzIbia2JCaAz02q0yCXUJTUr406Q95ZUEDiu6R9/YquZicfM/i4TbBvWAHwTprUmxCSg== X-Received: by 2002:a2e:9bd1:: with SMTP id w17mr136140ljj.231.1589906004903; Tue, 19 May 2020 09:33:24 -0700 (PDT) Received: from mail-lj1-f175.google.com (mail-lj1-f175.google.com. [209.85.208.175]) by smtp.gmail.com with ESMTPSA id f9sm9373571lfm.62.2020.05.19.09.33.22 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 19 May 2020 09:33:23 -0700 (PDT) Received: by mail-lj1-f175.google.com with SMTP id b6so443876ljj.1 for ; Tue, 19 May 2020 09:33:22 -0700 (PDT) X-Received: by 2002:a2e:9641:: with SMTP id z1mr145949ljh.201.1589906002260; Tue, 19 May 2020 09:33:22 -0700 (PDT) MIME-Version: 1.0 References: <20200519134449.1466624-1-hch@lst.de> <20200519134449.1466624-14-hch@lst.de> In-Reply-To: <20200519134449.1466624-14-hch@lst.de> From: Linus Torvalds Date: Tue, 19 May 2020 09:33:06 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH 13/20] maccess: always use strict semantics for probe_kernel_read To: Christoph Hellwig Cc: "the arch/x86 maintainers" , Alexei Starovoitov , Daniel Borkmann , Masami Hiramatsu , Andrew Morton , linux-parisc@vger.kernel.org, linux-um , Netdev , bpf@vger.kernel.org, Linux-MM , Linux Kernel Mailing List Content-Type: text/plain; charset="UTF-8" X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Tue, May 19, 2020 at 6:45 AM Christoph Hellwig wrote: > > + > + if (IS_ENABLED(CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE) && > + compat && (unsigned long)unsafe_ptr < TASK_SIZE) > + ret = probe_user_read(dst, user_ptr, size); > + else > + ret = probe_kernel_read(dst, unsafe_ptr, size); ... > - ret = probe_kernel_read(&c, (u8 *)addr + len, 1); > + if (IS_ENABLED(CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE) && > + (unsigned long)addr < TASK_SIZE) { > + ret = probe_user_read(&c, > + (__force u8 __user *)addr + len, 1); > + } else { > + ret = probe_kernel_read(&c, (u8 *)addr + len, 1); > + } ... > + if (IS_ENABLED(CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE) && > + (unsigned long)src < TASK_SIZE) { > + return probe_user_read(dest, (__force const void __user *)src, > + size); If you can't make the conditional legible and fit on a single line and make it obvious _why_ you have that conditional, just use a helper function. Either for just the conditional itself, or for the whole operation. And at least for the bpf case, since you want the whole operation for that error handling and clearing of the result buffer anyway, I suspect it would be cleaner to have that kind of "bpf_copy_legacy_nofault()" function or whatever. (And see previous email why I dislike that "compat" naming in the bpf case) Linus