Received: by 2002:a05:7412:31a9:b0:e2:908c:2ebd with SMTP id et41csp2992191rdb; Tue, 12 Sep 2023 20:35:18 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG7PP4yP3FwcO8exO8KfGCyLm/OYcnK2mJEf6fKM+XzYlATP3msQfV9HpRy30sonsg0MNzs X-Received: by 2002:a05:6a20:549d:b0:153:c9fa:4ed2 with SMTP id i29-20020a056a20549d00b00153c9fa4ed2mr1430069pzk.11.1694576117786; Tue, 12 Sep 2023 20:35:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1694576117; cv=none; d=google.com; s=arc-20160816; b=ZNFL9XoENmYXSHOHIG+prqfM776rJX955QE5w4ovXnH/fqK/8+lJvotkj5PNd3skSU YNvM1v2quIUhHX9M3Hl23TauHjcGAedC0sSsiUoLJrwjIM4Ql7+gM5LEuKf5lGQU7xmM LbEVJQBQqY3tfWvlVIgNg9gTG9+ZC4EMs6O33PWyDZONUMx0a43n93SJeZjDwWZ7ng8s 4OzY2h2p6ALRCs910xOne+7+DHrrSrIMCqX/iHd+2NynEdrjBh5CgsDdjDmRG420VwT2 efkMX4JTeVjuRD/330XQsV7mc337+VAMhM3B+1Reaw0rF6dm0FiOBPRrGFRJTOIcABly vGEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id:dkim-signature; bh=+FvgBleHLDAXGakSfS3qiwfni8Y1IEMQKcTM9krL71U=; fh=TLdaYVTYpkOucWp2gi2TZIRkEiwPxZ330gpwGOOjymo=; b=d2qdvhPcneU9Y1uIU/UeF3zSDYURwGROYKU/q0uQ5uuR/d0VEdw9BNLDlES17+rjr/ r8zhq6R8TZTkNGNH5eIq3EcOn6TxwPDpaLvADhPUikpmD0LvBmxMb2wbFHzCNkG8B9kB O9VwOFll/sCkTCt1o+nmPEW6sqOUsDdoI1tqQSbRxMswcW2vPMnIJm8ljYIKuRDecrCl 5EZJkEIXH0R2Ju4amyRx8DnhUykwb7B9IJ6Fyb7iO7UedgyPrekZOOV70dhmHnNQbbU6 1zMEog5D8i9d/bl9Mv+hcNiWG9eqp5H/BTkMHKmuUnX+PVA6Hk7BoJvpyBnNIrJE8sYn tKAg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b=kP5fdOEN; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=collabora.com Return-Path: Received: from morse.vger.email (morse.vger.email. [2620:137:e000::3:1]) by mx.google.com with ESMTPS id s18-20020a17090330d200b001b84f9263e7si9045080plc.325.2023.09.12.20.35.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Sep 2023 20:35:17 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) client-ip=2620:137:e000::3:1; Authentication-Results: mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b=kP5fdOEN; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=collabora.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by morse.vger.email (Postfix) with ESMTP id 2C33D81FADBA; Tue, 12 Sep 2023 17:56:26 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237589AbjIMA4Z (ORCPT + 99 others); Tue, 12 Sep 2023 20:56:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58200 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229680AbjIMA4Y (ORCPT ); Tue, 12 Sep 2023 20:56:24 -0400 Received: from madras.collabora.co.uk (madras.collabora.co.uk [46.235.227.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 76FBE10CC for ; Tue, 12 Sep 2023 17:56:20 -0700 (PDT) Received: from [192.168.2.112] (109-252-153-31.dynamic.spd-mgts.ru [109.252.153.31]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: dmitry.osipenko) by madras.collabora.co.uk (Postfix) with ESMTPSA id 44D9766072F1; Wed, 13 Sep 2023 01:56:17 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1694566578; bh=B4W7pjVOWkb2G7sLJ6XC/Gd9ZbgLTD16lqLUgQ1+rTg=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=kP5fdOEN5h6usdOBFOJ+J0yMygCVmvvfdfCn7ce8MMxK/QYYJqMlSmo8cCD5wBEAj U3Dlpshx0OoomJihvk6sbmd9YIbYPfPFq0BzyJE3wemqWRn5p2PBy5Gny1XN77yCuh BYb8HUwHkjWJKlXJX6jL9XTWNk89RoCyn/T9bid7Grwv1kmOaf9qw91hs13c1+N/n6 BLMz2JxaUiSzR+oPgifQfbAUlolCXfknJRR9/4rY6YcQ9eMT9G414Xeksy+1SBg9KP T0HO4LYXnT2Mxhp6jcufEPYRffF0mdczq6CQcO4WOVlAcs2HfI0p49XPBxrNugnCZs XAcwaTP89mFzA== Message-ID: <26f7ba6d-3520-0311-35e2-ef5706a98232@collabora.com> Date: Wed, 13 Sep 2023 03:56:14 +0300 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 v16 15/20] drm/shmem-helper: Add memory shrinker Content-Language: en-US To: Boris Brezillon Cc: David Airlie , Gerd Hoffmann , Gurchetan Singh , Chia-I Wu , Daniel Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , =?UTF-8?Q?Christian_K=c3=b6nig?= , Qiang Yu , Steven Price , Emma Anholt , Melissa Wen , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, kernel@collabora.com, virtualization@lists.linux-foundation.org References: <20230903170736.513347-1-dmitry.osipenko@collabora.com> <20230903170736.513347-16-dmitry.osipenko@collabora.com> <20230905100306.3564e729@collabora.com> From: Dmitry Osipenko In-Reply-To: <20230905100306.3564e729@collabora.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (morse.vger.email [0.0.0.0]); Tue, 12 Sep 2023 17:56:26 -0700 (PDT) X-Spam-Status: No, score=-2.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on morse.vger.email On 9/5/23 11:03, Boris Brezillon wrote: >> * But >> + * acquiring the obj lock in drm_gem_shmem_release_pages_locked() can >> + * cause a locking order inversion between reservation_ww_class_mutex >> + * and fs_reclaim. >> + * >> + * This deadlock is not actually possible, because no one should >> + * be already holding the lock when drm_gem_shmem_free() is called. >> + * Unfortunately lockdep is not aware of this detail. So when the >> + * refcount drops to zero, don't touch the reservation lock. >> + */ >> + if (shmem->got_pages_sgt && >> + refcount_dec_and_test(&shmem->pages_use_count)) { >> + drm_gem_shmem_do_release_pages_locked(shmem); >> + shmem->got_pages_sgt = false; >> } > Leaking memory is the right thing to do if pages_use_count > 1 (it's > better to leak than having someone access memory it no longer owns), but > I think it's worth mentioning in the above comment. It's unlikely that it will be only a leak without a following up use-after-free. Neither is acceptable. The drm_gem_shmem_free() could be changed such that kernel won't blow up on a refcnt bug, but that's not worthwhile doing because drivers shouldn't have silly bugs. -- Best regards, Dmitry