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 AF4D7C47DD9 for ; Fri, 22 Mar 2024 03:19:21 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4BC9E6B0088; Thu, 21 Mar 2024 23:19:21 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 445FC6B0089; Thu, 21 Mar 2024 23:19:21 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2E67E6B008A; Thu, 21 Mar 2024 23:19:21 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 1A1D56B0088 for ; Thu, 21 Mar 2024 23:19:21 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 4171D80AB1 for ; Fri, 22 Mar 2024 03:19:20 +0000 (UTC) X-FDA: 81923219280.06.5254CCD Received: from mail-qt1-f180.google.com (mail-qt1-f180.google.com [209.85.160.180]) by imf07.hostedemail.com (Postfix) with ESMTP id 32B624000D for ; Fri, 22 Mar 2024 03:19:18 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=cmpxchg-org.20230601.gappssmtp.com header.s=20230601 header.b=wZaRsaCu; dmarc=pass (policy=none) header.from=cmpxchg.org; spf=pass (imf07.hostedemail.com: domain of hannes@cmpxchg.org designates 209.85.160.180 as permitted sender) smtp.mailfrom=hannes@cmpxchg.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1711077558; 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=7AULlavfdEfOUm/GPX2L+Nif3qOYoN+V+nZ3StdUxak=; b=oNSfggw9xKumge+OxbyGMtDKyUrKVMxvTWpmCsmweuV2BvnB9HUYtejTAX5L01/YemqFjh bMEnQLISDO49nLYungr6ToS5NdTktp15e1YlTLgqsK+ybg1qjSxAK3Jhg/3jXV7Z6hjfAR 54TEY+KeF8jnn848p3s7adkqUUh3BqA= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=cmpxchg-org.20230601.gappssmtp.com header.s=20230601 header.b=wZaRsaCu; dmarc=pass (policy=none) header.from=cmpxchg.org; spf=pass (imf07.hostedemail.com: domain of hannes@cmpxchg.org designates 209.85.160.180 as permitted sender) smtp.mailfrom=hannes@cmpxchg.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1711077558; a=rsa-sha256; cv=none; b=YJEdcnarHbVxiaDj4PUN7y2Eze0e06gJHvMNQvEOTxd5BfCbYttcwRpVUwSc3i5gbmxvHb CWmltF4ReXckuv+lsGcrrL6GWmqbnxdBPPBOTBFOBJ1Vme30y+KvlyZGbMQRzXNILGvgyw YuF47lA4qdMAeH4YsubUZc4anT48d7Y= Received: by mail-qt1-f180.google.com with SMTP id d75a77b69052e-430c4d0408eso10415741cf.3 for ; Thu, 21 Mar 2024 20:19:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cmpxchg-org.20230601.gappssmtp.com; s=20230601; t=1711077557; x=1711682357; darn=kvack.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=7AULlavfdEfOUm/GPX2L+Nif3qOYoN+V+nZ3StdUxak=; b=wZaRsaCukyIFaDwyCd2sWd3PV5VYhw4O12k++hDEPNSERXs8kflEoUKPXZSopfCnNB B5pGDXKeV8TpRV+5qiJRwLIr7gw0jI026xiQ9YZpVueI+M5RmdbCoYGYg47xoOrbs9b2 7Uso0GuWwlGu26GTNw6vKjTyfKDNGSIAPn2udP4V9MgQxmomMzb/jpNMfH8K3aMB5tY0 JBWPKMgn5IeKTyvbYeOlztIEAJbCm8qT6MRyJUAzKS9mor1iv9lr0uh9NNie6jcYxuGU imlxaOOBybjfWnw2KAMGZdasFChQkPyQgAuv7bc72zMZAVLx3zc/KxDYkHPBZjB9nYO6 Z5KA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711077557; x=1711682357; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=7AULlavfdEfOUm/GPX2L+Nif3qOYoN+V+nZ3StdUxak=; b=WcBpMD7QnBAAQG+0HNMJoHDiRfVYTjYCnr7g2j/z0OFQdqQPduV+FLM6beVhBpKcRq wAGUXJhTxOE23EMsaXbv9ldRBFVOCZn3qhClZtI7ZFWYQNohQehXmJt+qHeKDAk7X6Pk S7lKoVB3zexz0WbQ4rXKCj407W0Z7vBNRYrWZZ6Adqt4VgegKvUOY+YBc0pLK0f0oEXI r/XkXhL4aUJuWWvH7BbWJDuGvhbk3IWEP9qhk/p/ZMTVOxvq1LLHWmAJu9bnSz37yw6I /rs+c5KdqsxpErFtmabUA4Jiy/o/7X8KPvs/FoumpelQjSczbSsgt6Jf4MyWuX7OBtxN 5I2g== X-Forwarded-Encrypted: i=1; AJvYcCXjpqhDUJenGNG+w4JlpmzxSt/7IzBRCp8xoniYJ8rW7pZ9wjbeVUdNdaQXrmOAM5H5T3DRDXYr+G+bvMW2d+qqSrE= X-Gm-Message-State: AOJu0YwcYpZ9xVcKf5FaNarHaC62rIohMQufTnF+BTcuARtA2z+9ztMg 9ZtwyN7nCaQraTQXSFNZhFuY49jbQsEjFK8gxxbHUQMnaGDj2EByXTyIaAXN/a4= X-Google-Smtp-Source: AGHT+IGeEElG2Dj2jPJzIQlEFbUdLTQ8YBWA/SaQDhmGpaNmeQgTBDh0ATOszhGcScXdso/ksZeIgw== X-Received: by 2002:ac8:5b89:0:b0:42e:f660:8067 with SMTP id a9-20020ac85b89000000b0042ef6608067mr1390189qta.36.1711077557158; Thu, 21 Mar 2024 20:19:17 -0700 (PDT) Received: from localhost ([2620:10d:c091:400::5:16be]) by smtp.gmail.com with ESMTPSA id ew9-20020a05622a514900b0042f0996be6esm513421qtb.3.2024.03.21.20.19.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Mar 2024 20:19:16 -0700 (PDT) Date: Thu, 21 Mar 2024 23:19:07 -0400 From: Johannes Weiner To: Yosry Ahmed Cc: Chris Li , Andrew Morton , linux-kernel@vger.kernel.org, linux-mm@kvack.org, Nhat Pham , Chengming Zhou Subject: Re: [PATCH] zswap: initialize entry->pool on same filled entry Message-ID: <20240322031907.GA237176@cmpxchg.org> References: <20240321-zswap-fill-v1-1-b6180dbf7c27@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Rspamd-Queue-Id: 32B624000D X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: qe9ae9f1ttjx4ouqbbwspht457yt5es3 X-HE-Tag: 1711077558-956939 X-HE-Meta: U2FsdGVkX1/0P7epCqVwCggt/4jo/UwJg4tv70xtveQ+ClVNBS0BfCQNll/Rj0COHMQsD+AT8FfVnnSiWPmIpQiTFj3nymp82JJOW8ZIkNHdY5acSDCKLBhJJS8MRsdNuXXmVezXOZYOisSeUse4mvyieqOhGjAblBz3Z3c+JnDM6l+i5ULocJ7FX7DvNn5uKs+aO3eUpVCOiWxvGzYgmvEQhlprQ8Ly7n1iAGq7nuFJPpDE874uAluQKd2jHEnkTR7EEI7QW7XEupWCQ0Pnz6NVYQRReggUtZOq3Dh1Hek9Zfki86T3E/If/FkzQ6KOtZwZ6IblTfIEIQ7EnCmP9XxpcvGlAAaeWgZSaCwS1BF4VNpJQ6CFdBogbzie4UTiovkga6Jg7KgXLYqncbnbX6j1qj09t1owXRHzL1OaoHmfdRI28c9Aty8yg27anz3UWF++6u46UUODm9y/WulyVwgbga1K4XNTi8ShNFNzzFvmeVhPdLZXAFFDsy/icD47TBNLz9WKtiZZjUAwWQru/9mujldWJqMSJ1TmPAWJdinld1mmenhAXIZACEgkPwKxJs0cEPb9mVVF9Rhy8bSKsMdZy6g0o5Q9wTamGgXQStyilgsdr3lc7bb7Lrp2rRkC3asqgxXF07zRhXPg681ImjsEafPx7aYnHTwAAgUk92bTLF6tuPVgqet9zz+oG3iB7tFWE9sqguxHCo2RW7UogKDfMPDfdp8XohpgVDfVhHOFIIpRmaOGdKVfABRjtilacrlhuwxirKghVaYYMvogPnMG6FQtXlr8YZvSKAIvao6QQ6C0njBxXFNrdiET/T+F/ksfGKY0FUZ8wX57n6SSIY7oqObS4Mdqqmz6jM5n+DDHFuJd0D0/kPd6fOOhP2zwH5ZmTjiYE3v1DY0PFR3Ss9NxY7r6B3w73EFkyS+YC2IHgSSX9Rxn+zt92TTJCSiSl4tkfxbXLCNuYpxjX8T +DTvuoFH 2FrNL1gVuH0eplqcEfbRStIHAdojbS53sFRF/dLJsf/r0TkgbJKmzBNJKOTgiYB2+Oc+bEPhR7CHxYZGUH/JVOYqsSjYfHdLSxtcZZkXfK43dX7os3gVcsynoY32xkUqCCLUgwYzd6h/qFujeMEfwocVAs9P7FeQHA9DmWU7ouB11y96GB702nNEyfu/IySHoR4r0/vpqmp7afT3YmUsHo2rucm+FJFAQErkBeW5OD/aPjhiUnbNWB4Ig5LoWCAMOkpxf8O33dJl4X/XBO2geWsnvTH4Fsy8wGfRFPNbXreA3wKMlgGfw90MeC6mCz187Im6fZAZTqa8sRD6hScHoe1k2UVjiRxGz8WjAc/Bgf3qcWADfvBJ2T3Gk1YRJsG0ufNouDwG4ZFHa+6izGDSSYUq+/j3jQC04rzo9DEg4d6myanZCDjflPvp+4yA81NPtfhPMUjl3p1AxOAtTnYrq9aVeN9mMtD9m/QPYU7oDdZuoCOEyA9Icxq1k8nRjgyNI7j30kgfCn1eRHrY/VWkxWK3XOuBl8UOQN3ZhMTuKVCFbFcwzzCbJ7pQGHK2ZY3Mz1ky4YWNj9CR4bWga6XOW0+9Ax4vN6r72YMCQ X-Bogosity: Ham, tests=bogofilter, spamicity=0.000006, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Thu, Mar 21, 2024 at 04:56:05PM -0700, Yosry Ahmed wrote: > On Thu, Mar 21, 2024 at 4:53 PM Chris Li wrote: > > > > Current zswap will leave the entry->pool uninitialized if > > the page is same filled. The entry->pool pointer can > > contain data written by previous usage. > > > > Initialize entry->pool to zero for the same filled zswap entry. > > > > Signed-off-by: Chris Li > > --- > > Per Yosry's suggestion to split out this clean up > > from the zxwap rb tree to xarray patch. > > > > https://lore.kernel.org/all/ZemDuW25YxjqAjm-@google.com/ > > --- > > mm/zswap.c | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/mm/zswap.c b/mm/zswap.c > > index b31c977f53e9..f04a75a36236 100644 > > --- a/mm/zswap.c > > +++ b/mm/zswap.c > > @@ -1527,6 +1527,7 @@ bool zswap_store(struct folio *folio) > > kunmap_local(src); > > entry->length = 0; > > entry->value = value; > > + entry->pool = 0; > > This should be NULL. > > That being said, I am working on a series that should make non-filled > entries not use a zswap_entry at all. So I think this cleanup is > unnecessary, especially that it is documented in the definition of > struct zswap_entry that entry->pool is invalid for same-filled > entries. Yeah I don't think it's necessary to initialize. The field isn't valid when it's a same-filled entry, just like `handle` would contain nonsense as it's unionized with value. What would actually be safer is to make the two subtypes explicit, and not have unused/ambiguous/overloaded members at all: struct zswap_entry { unsigned int length; struct obj_cgroup *objcg; }; struct zswap_compressed_entry { struct zswap_entry entry; struct zswap_pool *pool; unsigned long handle; struct list_head lru; swp_entry_t swpentry; }; struct zswap_samefilled_entry { struct zswap_entry entry; unsigned long value; }; Then put zswap_entry pointers in the tree and use the appropriate container_of() calls in just a handful of central places. This would limit the the points where mistakes can be made, and suggests how the code paths to handle them should split naturally. Might be useful even with your series, since it disambiguates things first, and separates the cleanup bits from any functional changes, instead of having to do kind of everything at once...