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 D8DA7C2BA1A for ; Thu, 20 Jun 2024 09:12:13 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 66D756B048D; Thu, 20 Jun 2024 05:12:13 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 61F746B0491; Thu, 20 Jun 2024 05:12:13 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4BD216B048D; Thu, 20 Jun 2024 05:12:13 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 2E1A06B048B for ; Thu, 20 Jun 2024 05:12:13 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id D0D0A1C3138 for ; Thu, 20 Jun 2024 09:12:12 +0000 (UTC) X-FDA: 82250700504.23.C886F6D Received: from out-181.mta0.migadu.com (out-181.mta0.migadu.com [91.218.175.181]) by imf12.hostedemail.com (Postfix) with ESMTP id B5AC740004 for ; Thu, 20 Jun 2024 09:12:10 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=t1rWMI9q; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf12.hostedemail.com: domain of chengming.zhou@linux.dev designates 91.218.175.181 as permitted sender) smtp.mailfrom=chengming.zhou@linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1718874724; a=rsa-sha256; cv=none; b=r2DWoMOXo1ZVl4/UOyAqB5n9ovUIwaxyQr3RrCtO8ypNAgzSfxG3gr2pFSUt+tWM0S5JNi pxbxfuI9tJ88o1j8pVN64/5y2rEl8WZ3EArts02wQs1rPi53zBnlOKjtt3sNRSaFyMH23t hGsDeHwjxwAA9FXTBiOoaI7dIRqKWTo= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=t1rWMI9q; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf12.hostedemail.com: domain of chengming.zhou@linux.dev designates 91.218.175.181 as permitted sender) smtp.mailfrom=chengming.zhou@linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1718874724; 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=EErAZfzV0Kiso/CIYwbtifF7lhhj8FRvIN1s+0uNgx4=; b=W6tBNJHUpWgaQ1XMILTuclQ1uutdB97o9YE89M2qa4rYchuBQmXn5q761UktaLo796/zz1 WTNHHEDizTQBu99+zpUBSI8e/SFoacC3ybAJnCKeemGSyeIeLhVYmn6cHuiDEGdMAzWARe 5Q0h17U3wEBgYYMqo73WVIXxyAguqaM= X-Envelope-To: dan.carpenter@linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1718874728; 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=EErAZfzV0Kiso/CIYwbtifF7lhhj8FRvIN1s+0uNgx4=; b=t1rWMI9qR33TaCIUALD42Ok45oacdaGwxglc6mECXXGu+zCFsoeCTtG5+w/dyEL30eqvQL bMTuL4A41VVQPeYRARxdqsW5kygvjZQD8VKphK1TgXq212AptoDmli5B6stGCA6IIEbyVS wljItV8EAo3BqpfGliJvr1wONBb84vE= X-Envelope-To: linux-mm@kvack.org Message-ID: <98c42887-c742-4fe7-9bf5-e0eb4d715c75@linux.dev> Date: Thu, 20 Jun 2024 17:12:03 +0800 MIME-Version: 1.0 Subject: Re: [bug report] mm/zswap: use only one pool in zswap To: Dan Carpenter Cc: linux-mm@kvack.org References: X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Chengming Zhou In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Migadu-Flow: FLOW_OUT X-Rspamd-Queue-Id: B5AC740004 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: jkh3169of4st9gsfp6kco35uqw6q7ar9 X-HE-Tag: 1718874730-164501 X-HE-Meta: U2FsdGVkX1+djq/+8Zd/r58tFTZK/1rLcfVg959f6cVnn18HHLtA54u/7cizXApmEPxG0iu5mlmdh1dIDSMk3L04tmd+S5YcrOTpFoU1C6zDcE0jFiDkmXgsoJeyoHEPUPV1Qxvfxo6VBDiOCurPwTvuQJysx6BmBJTdfKNT290Gkh1QtPMTdnLAj6CKTPBLcC5L8yzOOditTqVm68DQpskTov09/1v/cOLa30sQOKEICG7BSl81VEfnsUwgGpKoWJzIJ2UUzZJpW+hqGDIDi4TkfQkVoM+34Rjeu+2Ni1KvA3v02WKpHiuqSTnYMd00uOKxNIgVWM5wjQZNwgLpJiA7Le1LFi6eR3IAZSVM7BLBWpAuqoVggN4LzZL4SsHf/n2A7pE7Aj1c5cF9aICp5fUnL3pR7O24mCnARj91ixCb5qWaTpkhgj4uVn2taV7vgwvb7poCMTUauULyDMmxTDAu+/6f+slvzjfEHbEWXhVUaQSHHMqMlgMi2qfYc3KtfHcRYFickb5SOXLgdX9QgIPcXnDARbExBUnSIBo1189fLmNCncFFpB5OyfAJmt/1KkdVawm31M95oXoXIyw6Z85tmSCUcJSDGzB5z4HRNB7BNhto1EAdrawn7sMcPgGl4IJF2FaEwJWvtPpSg0knhQluyB9WuiVXKObM5QT3KNTMwWT70qS13nHyZLLBBTafn6pgo9dma1D+1vG7LqnK5aGExTYeMzhbX2O7wR/YWmNy8Da2MDvpDGjObuZScZdWfc6JDKhtTg5wNmLwLr0PG55Qq1j6Y2BnoyS8bJkI2FFZkQ4VgJSk89wNe/0srBV+29933dqnilboGwxzWF0wipMFNXKscGvTy4+NGKcQ/RTuWFpJkhIivmT+THdZipeYfX0xWAvX3oTf4lKTsFEs4Ipusne0trP/5lgsvRT3tH5GnciND4f3BZe3Einu6e5xJwJI5lkPVBE9Jbahv34 Xs1ucgQP Fo2czACuSg39bM1Bbrsd91zgqOAyPPZxlgl/uRpvmdzsyXk5WAX1/OUyKpE3bqgllRpKM+rlmmQoTeYoVegIPawbk+OmRGOHdP2sBCO+SJ3MZKUeM+P6cIVlEkQ== 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: List-Subscribe: List-Unsubscribe: On 2024/6/20 16:52, Dan Carpenter wrote: > Hello Chengming Zhou, > > Commit 6193f190fe0a ("mm/zswap: use only one pool in zswap") from Jun > 17, 2024 (linux-next), leads to the following Smatch static checker > warning: Thanks much for your report and explanation! I will fix in the next version. > > mm/zswap.c:306 zswap_pool_create() > error: potential null dereference 'pool->zpool'. (zpool_create_pool returns null) > > mm/zswap.c > 244 static struct zswap_pool *zswap_pool_create(char *type, char *compressor) > 245 { > 246 struct zswap_pool *pool; > 247 char name[38]; /* 'zswap' + 32 char (max) num + \0 */ > 248 gfp_t gfp = __GFP_NORETRY | __GFP_NOWARN | __GFP_KSWAPD_RECLAIM; > 249 int ret; > 250 > 251 if (!zswap_has_pool) { > 252 /* if either are unset, pool initialization failed, and we > 253 * need both params to be set correctly before trying to > 254 * create a pool. > 255 */ > 256 if (!strcmp(type, ZSWAP_PARAM_UNSET)) > 257 return NULL; > 258 if (!strcmp(compressor, ZSWAP_PARAM_UNSET)) > 259 return NULL; > 260 } > 261 > 262 pool = kzalloc(sizeof(*pool), GFP_KERNEL); > 263 if (!pool) > 264 return NULL; > 265 > 266 /* unique name for each pool specifically required by zsmalloc */ > 267 snprintf(name, 38, "zswap%x", atomic_inc_return(&zswap_pools_count)); > 268 pool->zpool = zpool_create_pool(type, name, gfp); > 269 if (!pool->zpool) { > 270 pr_err("%s zpool not available\n", type); > 271 goto error; > > pool->zpool is NULL > > 272 } > 273 pr_debug("using %s zpool\n", zpool_get_type(pool->zpool)); > 274 > 275 strscpy(pool->tfm_name, compressor, sizeof(pool->tfm_name)); > 276 > 277 pool->acomp_ctx = alloc_percpu(*pool->acomp_ctx); > 278 if (!pool->acomp_ctx) { > 279 pr_err("percpu alloc failed\n"); > 280 goto error; > 281 } > 282 > 283 ret = cpuhp_state_add_instance(CPUHP_MM_ZSWP_POOL_PREPARE, > 284 &pool->node); > 285 if (ret) > 286 goto error; > 287 > 288 /* being the current pool takes 1 ref; this func expects the > 289 * caller to always add the new pool as the current pool > 290 */ > 291 ret = percpu_ref_init(&pool->ref, __zswap_pool_empty, > 292 PERCPU_REF_ALLOW_REINIT, GFP_KERNEL); > 293 if (ret) > 294 goto ref_fail; > 295 INIT_LIST_HEAD(&pool->list); > 296 > 297 zswap_pool_debug("created", pool); > 298 > 299 return pool; > 300 > 301 ref_fail: > 302 cpuhp_state_remove_instance(CPUHP_MM_ZSWP_POOL_PREPARE, &pool->node); > 303 error: > 304 if (pool->acomp_ctx) > 305 free_percpu(pool->acomp_ctx); > --> 306 zpool_destroy_pool(pool->zpool); > ^^^^^^^^^^^ > NULL dereference > > 307 kfree(pool); > 308 return NULL; > 309 } > > regards, > dan carpenter