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 63D49C27C79 for ; Thu, 20 Jun 2024 08:52:11 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D5F0D8D00AD; Thu, 20 Jun 2024 04:52:10 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D0EE28D00A7; Thu, 20 Jun 2024 04:52:10 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BFD8A8D00AD; Thu, 20 Jun 2024 04:52:10 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id A1C678D00A7 for ; Thu, 20 Jun 2024 04:52:10 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 1B86BC0B50 for ; Thu, 20 Jun 2024 08:52:10 +0000 (UTC) X-FDA: 82250650020.26.44AF94C Received: from mail-ed1-f53.google.com (mail-ed1-f53.google.com [209.85.208.53]) by imf25.hostedemail.com (Postfix) with ESMTP id 4A5E3A0003 for ; Thu, 20 Jun 2024 08:52:08 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=linaro.org header.s=google header.b=egdgehT8; spf=pass (imf25.hostedemail.com: domain of dan.carpenter@linaro.org designates 209.85.208.53 as permitted sender) smtp.mailfrom=dan.carpenter@linaro.org; dmarc=pass (policy=none) header.from=linaro.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1718873524; 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:in-reply-to: references:dkim-signature; bh=Nr10YNqqLCTV+JRz0O/EuD0nv9xCFw+kfKF/veYp5Hg=; b=QqZzFiUdi5M3Kuo8uYy8f4OaeqDF/QVltxo39OtZ3fAWEhYHuORd1+fDQ0CeNBPC3Lg6Uc 6OSxXYWLwFOVnCoZmJjThciivI1yrLkar0iZeSzOe4gkDMrMMXpA3Ke2AA0chIFHzOxwHO japoE3CutPaC9MHL2S1RMIvEQLR2sIg= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=linaro.org header.s=google header.b=egdgehT8; spf=pass (imf25.hostedemail.com: domain of dan.carpenter@linaro.org designates 209.85.208.53 as permitted sender) smtp.mailfrom=dan.carpenter@linaro.org; dmarc=pass (policy=none) header.from=linaro.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1718873524; a=rsa-sha256; cv=none; b=VQTbTHqCDoB9v2RElzvTKD1xBthxABSxu+ONZ3r3L0/5cHUD4FYWxgk5ojZ0osF3ulRj2S exbTgGPKAra+tWmCbxzPKQyfkEUwqym5S7nQzk6jc431iH2k4d9IOOcqx0wbBaUCaDKKcu 23Qk6aAdiWYUuaxnfpVS1r7uTyv/QOo= Received: by mail-ed1-f53.google.com with SMTP id 4fb4d7f45d1cf-57d0699fd02so296218a12.0 for ; Thu, 20 Jun 2024 01:52:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1718873527; x=1719478327; darn=kvack.org; h=content-disposition:mime-version:message-id:subject:cc:to:from:date :from:to:cc:subject:date:message-id:reply-to; bh=Nr10YNqqLCTV+JRz0O/EuD0nv9xCFw+kfKF/veYp5Hg=; b=egdgehT8IAUdQ5fHZK8w9q1AUXk2DccaAy03XWc31euHR6ut5ACJTKSPpqwUIp9pEU KAffL25PhLeqlD0gbyMXXhzrwFcZD1cP6FfaTwh1EBL+JVw/a8en50RIKxQ/XJ1LhI+e cmP60P6vx1IuQy9UgS0DzP0z8ZxdalKIoJ9hotaqGzCh5G/OASZBFqozjxhJXlbuj1IE CCWvq0BOYfjUTSgQnvCMDYPCwce9otsif4/D//lTGB5+HU7w+yvD3e3VuTn4JTDHpqsG raX6e4iCY4CX7/U7Y2efk8pfEMu9BGMCsbvF6m1tBdBUpk2sOGjLZGFqG5KwdZzNufIt ogaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718873527; x=1719478327; h=content-disposition:mime-version:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Nr10YNqqLCTV+JRz0O/EuD0nv9xCFw+kfKF/veYp5Hg=; b=mybxNJrxdBP7Wmm1oB/1v0VGmN44gf6J5OrSyEQgxfYkUf0AzeXJv56CCodGo6WAfb 47wZFkIIOR2TR+lHRHxatEN9OCPHjPHLatuSYA0ICj6A/muV8Fjen6E8Ruse/fdUPDik qUQjH2xboz2LX6CrbdOlVkGRKikBEJc/W1hZGfjy4MWOR3km85bp1yKYaw3+b6sxd7hK QCWwQzKpIPpkhUu2vHgHg1QZKUfCEKqDEux4+uoWBSmYwBB2cOvw2+LXALDLAHEEuJ2T IuH8YVkWPvqlkMA1TwxZoafNhG3FYBXw7Qyclo8OjICzijI03HbM8YKR73cqQ6F+CwtO rQiA== X-Gm-Message-State: AOJu0Yy1TGabDBOzLDdsdxBCvGrNpLyC8NUcZWwtzI8fvuHlG+rJAIoK HCsp5em8IqqWxCazpqwnqurNLCOHY1TzZY51YjG6di/XJitVcKGkhdfFrr9/qgsrS6/s/fxhxx7 b X-Google-Smtp-Source: AGHT+IGPpa3bpHy3AjbRmaK1VVJjPjBpn4jcW4YKr4qgcUqyRU1TEi0amRCa1wHCE5YjztAHwweerw== X-Received: by 2002:a50:871c:0:b0:57c:71ca:f651 with SMTP id 4fb4d7f45d1cf-57d07e66a59mr3413394a12.20.1718873526604; Thu, 20 Jun 2024 01:52:06 -0700 (PDT) Received: from localhost ([102.222.70.76]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-57cb7439646sm9422986a12.88.2024.06.20.01.52.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jun 2024 01:52:06 -0700 (PDT) Date: Thu, 20 Jun 2024 11:52:02 +0300 From: Dan Carpenter To: Chengming Zhou Cc: linux-mm@kvack.org Subject: [bug report] mm/zswap: use only one pool in zswap Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-Rspam-User: X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: 4A5E3A0003 X-Stat-Signature: wy6e8g7desdhfmhedai43ggxdpc4bpir X-HE-Tag: 1718873528-957433 X-HE-Meta: U2FsdGVkX1+BTOM/9e15h4dnHO+IetmlO0nJiAAtqwvymL14kBLp4+Jt0xcHJLz6K7e6i0V1e7A+jkVze25uIeqCuya+p8aiNTLCMay6L3ismNRYOv6wqQKNl+pDe36JZexIpY8694imLrPorDp2AcohXsriiCTFtUVXAXVhcHhYcJc/ztufoKlBgXB682HsUmTZGxTV8mJ/uBbDWF15nby8IFMKyIdc3aIWMOBxUZ7fys9Mci+f8jLAFEjTUcZjUle2uvtM97JL31GwmkLaCC6Jn5yd0B1IhU1VrR+bwSMnBTZTgGfImlW/XlQtEBFtu2lEIiNfz4OSpvRe8DCsQLmi9NOiY7dgUaT1Igu5RcqzgaOAOv3+s7QG/gxbVifqp53Y69Oys1EVSA94OJsTOaExuh7bF1xZRaTrZAOSpVKybyoaPFMfdpMfY33RKSdMrpjeeeb1GEAOrWyUS6qtebQf53WDB6M+5zw6rCtJwa3+kz1Fpusda3d/C+lAz7OiXNeNX5WT2HYdpQd/VfHzhPEMMeOLLgOaPQ3RxqUgn5kGj1sTFNsQRGgRcrJUvyevKQ67RJWz+9A6YBcOwEGKURAy6vHL0/ofBKLTKrrb/kVXSSfslXTEY+6q/isyJe60w49I2x9KDOwBXFd9WTqc+0/uWdnyYT/pE8Y4qBU0ykoQworZjz2fJYUqaUf0TGgq43/UrbAbZ5y8Ef7UVm5CdALdETmlouI+2DmgIEdlGWj4yAQ1D6EqM7Mpb5Uvfztt3FVUcXT7OHXIzHnCffzRU62MzCA7D/phTHLnDlvDViPDzALZ2oLQLyRBPWI4JRFoVwOHxcScOk0mPTdaMm9hJM6Ig8GqW1wQdVISYQCZQWV22N9g4pV6WZlG40okdW1iJY23C/ts/WaMA7jsrI0Dpnslp6bQFwK9oZ2Le7JWmoaWY6GAUS8j0hgYBB5Luuw1gIfTf89d6LKdox6zo62 o5g2EMZS ztpmNpr4uxr5fBRpm/u9W9F7xCzAqItlyDOGrWX4mzv9edqmRzLvaCYTvDDaRunupr1IobxlGGmHAmHJJ9OHkrr2vwbU07uBZKmgWFnCwYkaTsAUW6jj5jRsu7jB7Msk9dyNX/ZWht8lzzKQFp3w5tNzUTdYqdMOHzszA0LA4f4lEOP3KRCr9ax5XoHhyymqLFEc8wYOSUPpdkg7oUZxbD/fGzHu9B+8pPhgr19ISqDavKqgdKG9q0bAVxw== 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: 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: 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