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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 48171C001B0 for ; Mon, 14 Aug 2023 16:09:19 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D00476B0074; Mon, 14 Aug 2023 12:09:18 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id CB0526B0075; Mon, 14 Aug 2023 12:09:18 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B77FC8E0001; Mon, 14 Aug 2023 12:09:18 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id A257B6B0074 for ; Mon, 14 Aug 2023 12:09:18 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 6023440B76 for ; Mon, 14 Aug 2023 16:09:18 +0000 (UTC) X-FDA: 81123194796.18.AC9B170 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf23.hostedemail.com (Postfix) with ESMTP id 19DBE140005 for ; Mon, 14 Aug 2023 16:09:15 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=hCACQNqc; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf23.hostedemail.com: domain of david@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=david@redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1692029356; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=lIUJ6WcpfPfRJeXqtbNVGmz8+UrIjkRJsJFZJdxFcxE=; b=oSqaAW9OSWM5r8uZ/+LWKce4QdPs/hFLbEEUWrX5Z7LvAtmXCs74OOnFwO1BfGSne0Qhkt fA8yFhvObFx+rOWjIsuogZjmDlG887NDWD6JowGscp+94eLKNGIvWM5bwPoc8OiN0qD61s GzdU0UQc2OcyumjZrLiptjDGEHUjAx4= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=hCACQNqc; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf23.hostedemail.com: domain of david@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=david@redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1692029356; a=rsa-sha256; cv=none; b=eBZses2z7lIu37J8BLfE3FzLmYSr25EAEDPBLv/BfyRyFbxtoi74pnmcLqLBH0wIzvE5Lv kc25CgZ3dZ88w3JF0Iz2XiW/cV+DjtOPntN55VDN2YbmI9vl7BNqkNZ1fReRmbWIOZRKZ+ Rd+BYZx9TAIK+ocuDh/7400ekEEN9sQ= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1692029355; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=lIUJ6WcpfPfRJeXqtbNVGmz8+UrIjkRJsJFZJdxFcxE=; b=hCACQNqcZPSobVEmz+zxitr7Msg5DO04s3etwpHx73aHuyyOK6pP0yQAHGYI54Bwb75GqZ rl45mkvb6bZwPMzuGHgYU7rbZYf9rOgps+1zmHlhpd+FWxsoJ/FfFobGncrKehQp+fdEn1 YJ7d3sC3pXrD1LOw97+F3xt6mtTsDug= Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-586-w3NHLL1OONm3wJGH_uHb_A-1; Mon, 14 Aug 2023 12:09:13 -0400 X-MC-Unique: w3NHLL1OONm3wJGH_uHb_A-1 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-3178ddc3d94so2672810f8f.1 for ; Mon, 14 Aug 2023 09:09:13 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692029352; x=1692634152; h=content-transfer-encoding:in-reply-to:organization:from:references :cc:to:content-language:subject:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=lIUJ6WcpfPfRJeXqtbNVGmz8+UrIjkRJsJFZJdxFcxE=; b=FdJCPXrDk2/oduKT3f6Z460557aT/dCkA9CI+WUa4fkgOX040kGHg7k5dAj88T2fPo eliRk76F3qZ5s0Nf/EqlDzurkf0BlDEGoPB/8ybHJIobQuj2aGM5mAQT4G540JScf2yM NZ7WqHzGL8mzoE363fSXwu3x6u4YPfUO0vuelhhbgiF1390B1ElXgV5Eu3Kxm43jnGBn V0SbadYtku05fnAffyCbCBSjOqQy2YRKsko98P0RIPf64aaIb2bE6SNvrxC18qWt+ZLl vZVefXCC9Z8+JMbt/xwdeVBZ2NYdXCnpRSKkQQGqyIMJtem/ZO3O0+zRwqYjMC9eKXQr rN7A== X-Gm-Message-State: AOJu0Yydzm7iP0njTiCQZGhRk+/ztfkAYtvXR7rJd2YRWxV0xPKe97YH Wc41gMU9BdQAYGgZe/AgmsAZvkt+/GEbBJIaFu3vP2gUKZvLawcE+Y34JutFL6LjR9GyBYbpawv zx4qjlUkd38U= X-Received: by 2002:a05:600c:450:b0:3fc:e1:24b5 with SMTP id s16-20020a05600c045000b003fc00e124b5mr8086754wmb.23.1692029352115; Mon, 14 Aug 2023 09:09:12 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFpis8Bm4xGQ4bbM2facYfh7G+38bFyuSjPO6zsqsG+tLs0PgLhvRyivqwBPf4Zqgl+Iq9+Qg== X-Received: by 2002:a05:600c:450:b0:3fc:e1:24b5 with SMTP id s16-20020a05600c045000b003fc00e124b5mr8086732wmb.23.1692029351719; Mon, 14 Aug 2023 09:09:11 -0700 (PDT) Received: from ?IPV6:2003:d8:2f2b:d900:2d94:8433:b532:3418? (p200300d82f2bd9002d948433b5323418.dip0.t-ipconnect.de. [2003:d8:2f2b:d900:2d94:8433:b532:3418]) by smtp.gmail.com with ESMTPSA id n5-20020a05600c294500b003fe1fe56202sm14908803wmd.33.2023.08.14.09.09.10 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 14 Aug 2023 09:09:11 -0700 (PDT) Message-ID: Date: Mon, 14 Aug 2023 18:09:10 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Subject: Re: [PATCH] kernel/fork: stop playing lockless games for exe_file replacement To: Oleg Nesterov Cc: Mateusz Guzik , linux-kernel@vger.kernel.org, torvalds@linux-foundation.org, brauner@kernel.org, ebiederm@xmission.com, akpm@linux-foundation.org, linux-mm@kvack.org, koct9i@gmail.com, dave@stgolabs.net References: <20230813123333.1705833-1-mjguzik@gmail.com> <20230814150530.GB17738@redhat.com> <20230814152038.GA2367@redhat.com> <52192c2f-c7b1-9c07-7ca2-10fc6bd347b0@redhat.com> <20230814155817.GC17738@redhat.com> From: David Hildenbrand Organization: Red Hat In-Reply-To: <20230814155817.GC17738@redhat.com> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspam-User: X-Stat-Signature: 7ie7yuofoz3f9z1nug3r4w9jqwdz46bw X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 19DBE140005 X-HE-Tag: 1692029355-487766 X-HE-Meta: U2FsdGVkX19NCG87XG7Op63ZM2x1WRSUyAnN9WJDlzAbbj3Lwlg+XGas4cprbhkCHcWqbIlNUGOaKpyV9FWu03Ke4v68u4vEBIggYRWqoGtY78m28JgQT/xT0VK1zYzdzQFzm+2F+Xc9oqJzUdG8qW7O/dW41/m0oTi/7JYpV2ReQnh9wMrR6y0tvDysCBs5jocBXQek6VGDb2I8gxdSy1l8OpZuIDBuZtg+u5fe8Z5aEF766nxe03XpxE0oUu5HBIzmhaa6W/bO7dxkCU3Jn99ZItxl4jiSSMxIc3skLpnEfadyig25YOASVKfuak/9eJ00NwkyXrrw36NV0WE37A4eSpln88ZT/wO7FpsZpXDgj6TP5Eh3ir1oMFGe/XVD6H6yEv+1uZ3quMgE4IgcAbB7FsYVKujikMFk+BnYrdxbe4jXbam7JI8h7QwB+77+qLqrXTCmFbtWawaX8RLlgHQAEq+CL7R2lMaobIM7l4Q2FSV7VkeolxVlqHxE5AcXAP2osiJuSudi7iIcDOWE+R8wHHBkxqH/z77s93cpIDXuPZas2w+oPq8ZAGvipx9Rd6bUHLVBXf2m7tCDNDMekSQxLX0HUg2HMJ1A5eAj2ssKtMfMOvjvddln5pqDyfcksQPxn5fwfy27z/gVljzFYKAuDJE/uyKGI8tl0HxEzsHMkLcWDLftjUQUuEEKGs6FtvElHd4vOwtWJqX7cQHjyGplFSPdZ7RLrbNgbE41M+6UF1Gv8UzHi4lo4tI8L8RZgclXEMtJ0gxorXFjrr9uwH/fvH4wiK48gyfP96YKO70fbdcbd/gEzFPw+sw12MKt3IgABAKAqMsxD64IPylmjzRsgmfhHmoBKQJh/zmIjcgsBd9QSqEzWWqe6sJc6UOvDlGIU4yOCU70xWqBevbRk6QiisoxeHfZ5OyVYLXGdRF+VRUehy+O5AdYxqRNEDUwD28C6RQCTW7CxDMtda2 W1OVOw80 Aqv+Hm2FKFZf6gUFcx6AxK39WRVYgjTVei+xLn1VSnSUpmiqhvJUCKl/dftIaaDyFQ6ABmr6nIdYqeF6OqOzY6XH37hzVnxqCMcvl+kxg6kH4KeK4SjAPWOmZE1Eh9UQbpbzJbX/Flu4PNO1Y0V5awoJmZsMDqQPW57DuM1FgI34Sn3S86Jdc7WRABhqWdsMofdBVAmKuAmh3jxEsxIisE5MYZx5OTA46f9ReqM0jYHmkRAVwmyIMm6s5619sDmc52FKe5dG7ENToLifx+LhE7qLNARyurl4Kx+ksLxo5gjVpR1sLKi0Z/sCYqc1q76ueKd6iqbitvMwRzmxSG44qkfvl4IsP7PWL7J0buMLrMrtdaSnO1ea5e+/pLOse/R/5VLSpCTrVgw8zJI7nep/g1pSfjcTuC60S2q55/L3zg4OG5m0= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000015, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On 14.08.23 17:58, Oleg Nesterov wrote: > On 08/14, David Hildenbrand wrote: >> >>> OK, I seem to understand... without mmap_read_lock() it is possible that >>> >>> - dup_mm_exe_file() sees mm->exe_file = old_exe_file >>> >>> - replace_mm_exe_file() does allow_write_access(old_exe_file) >>> >>> - another process does get_write_access(old_exe_file) >>> >>> - dup_mm_exe_file()->deny_write_access() fails >>> >>> Right? >> >> From what I recall, yes. > > Thanks! but then... David, this all is subjective, feel free to ignore, but > the current code doesn't look good to me, I mean the purpose of mmap_read_lock() > is very unclear. To me something like > > if (old_exe_file) { > /* > * Ensure that if we race with dup_mm_exe_file() and it sees > * mm->exe_file == old_exe_file deny_write_access(old_exe_file) > * can't fail after we do allow_write_access() and another task > * does get_write_access(old_exe_file). > */ > mmap_read_lock(mm); > mmap_read_unlock(mm); > > allow_write_access(old_exe_file); > fput(old_exe_file); > } > > looks more understandable... I don't particularly care about that code, and if there are ways to make it clearer, great. As long as we can clarify in the patch description why we decided to go again the other direction (write lock) and not do what we did in 2015, that would be great. -- Cheers, David / dhildenb