From nobody Fri Dec 26 13:17:30 2025 Received: from mail-il1-f177.google.com (mail-il1-f177.google.com [209.85.166.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 126132C694 for ; Thu, 4 Jan 2024 19:42:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b="scGTid8T" Received: by mail-il1-f177.google.com with SMTP id e9e14a558f8ab-35fff22678eso2957615ab.3 for ; Thu, 04 Jan 2024 11:42:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1704397376; x=1705002176; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=tLVjvsKzWbuu1Tn6vfa7DAnWzdMErwoBxrG3TwM6ilc=; b=scGTid8TC9aU85cSvQWjhr6iMX92QpCxJd5CcTAEise3S4nqV7VS3tV1S8XsEC5LHf 9Ykh9FF3W3gD4HQA+1mFenYHP8ttY8i70H8IJEUIxubTCq5F1HN+yx2u7PP15ziLiG3N DCqfO1aB4uEU8tTZTBRcXKRBNSvqQkjfA2bfiXoW10vMpLlzL73Hny8YjBgWS4z2ABs1 5IfUU34xU8UAtkQLuQqiUe/MHnznUiY4JDPd6jkoDx4Edkl3M2m5PoS8v+SQpzSC0EkM ymmNFblI7ZH8gvvquStOyiYr6HH1rIFposkHIq8jlwjXWZC8shPNpmjNraRfpTa/YN2N w1Lw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704397376; x=1705002176; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tLVjvsKzWbuu1Tn6vfa7DAnWzdMErwoBxrG3TwM6ilc=; b=vdjlQ9fjv8+iZ4I6miOxo9xKFL4PRSq1bNLF0MGYXss+lDgS/12/+5RBuHjxhdmzVW QGoQy+sfJDo86mD/1JveGgs+OXffD9SmGj5cwpasMbszGpY2ZmTNHKguP5MIWgMQoZ6N 0h7y3G+FVxWQMQ+cGPUV9xsoqfRwzXMulYWVDfShs2V8SVmdMuviY0GzdmFAYrqWdO8I VYrqO+BngDV9ODZINOTh0T/RtxaqPt3gPMGl9KLY4tUudadrkTBfTBMzUoBzJhWGadjx s79LJUbDjnH2/P6cAj13AMM+2irVR+euZifzZ4xfzhZTAEMuCqLPoUp2lXEJLKrx7LR3 dYiA== X-Gm-Message-State: AOJu0YyN08mo4v+ZS+O8SiNKp0oOodIYaGfm4Uur+GQeDzNcgHTVWibH s7qAAU9+Ihl6VMJy/oUNNZRMIDjPTTn9Uw== X-Google-Smtp-Source: AGHT+IFm+qeZXnh4PvWyj6eeezVL805LTax37/sq68iQqd8SUNlSbsETWbuY1iXc3g3AU1sH94b8XA== X-Received: by 2002:a05:6e02:1be9:b0:35f:e306:cc2d with SMTP id y9-20020a056e021be900b0035fe306cc2dmr1172109ilv.32.1704397376337; Thu, 04 Jan 2024 11:42:56 -0800 (PST) Received: from charlie.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id o10-20020a92daca000000b0035d0da89a0asm19606ilq.6.2024.01.04.11.42.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jan 2024 11:42:55 -0800 (PST) From: Charlie Jenkins Date: Thu, 04 Jan 2024 11:42:47 -0800 Subject: [PATCH v3 1/3] riscv: Fix module loading free order Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20240104-module_loading_fix-v3-1-a71f8de6ce0f@rivosinc.com> References: <20240104-module_loading_fix-v3-0-a71f8de6ce0f@rivosinc.com> In-Reply-To: <20240104-module_loading_fix-v3-0-a71f8de6ce0f@rivosinc.com> To: Paul Walmsley , Palmer Dabbelt , Albert Ou Cc: Palmer Dabbelt , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Charlie Jenkins , kernel test robot , Dan Carpenter , Julia Lawall X-Mailer: b4 0.12.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1704397374; l=1064; i=charlie@rivosinc.com; s=20231120; h=from:subject:message-id; bh=ChQMN8HXWHXJl0z5+9ukmO+5sTC3VuwHdA0xAgdz31A=; b=Nc7YMdNtkiogT9SuSOwkwklZUSWSzuGSMVWI6Jj/7Ki7kHxfugbk8U/yTQtvOO8OlVcnpSpoY O5QMhR5H1UfAHoQ8EspkwAbM3BL/hJ40b6H9Oys/ELv92VYszOq6yck X-Developer-Key: i=charlie@rivosinc.com; a=ed25519; pk=t4RSWpMV1q5lf/NWIeR9z58bcje60/dbtxxmoSfBEcs= Reverse order of kfree calls to resolve use-after-free error. Signed-off-by: Charlie Jenkins Fixes: d8792a5734b0 ("riscv: Safely remove entries from relocation list") Reported-by: kernel test robot Reported-by: Dan Carpenter Closes: https://lore.kernel.org/r/202312132019.iYGTwW0L-lkp@intel.com/ Reported-by: kernel test robot Reported-by: Julia Lawall Closes: https://lore.kernel.org/r/202312120044.wTI1Uyaa-lkp@intel.com/ Reviewed-by: Dan Carpenter --- arch/riscv/kernel/module.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/riscv/kernel/module.c b/arch/riscv/kernel/module.c index aac019ed63b1..21c7a773a8ef 100644 --- a/arch/riscv/kernel/module.c +++ b/arch/riscv/kernel/module.c @@ -723,8 +723,8 @@ static int add_relocation_to_accumulate(struct module *= me, int type, =20 if (!bucket) { kfree(entry); - kfree(rel_head); kfree(rel_head->rel_entry); + kfree(rel_head); return -ENOMEM; } =20 --=20 2.43.0 From nobody Fri Dec 26 13:17:30 2025 Received: from mail-io1-f54.google.com (mail-io1-f54.google.com [209.85.166.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7456B2C6A7 for ; Thu, 4 Jan 2024 19:42:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b="ippr5imp" Received: by mail-io1-f54.google.com with SMTP id ca18e2360f4ac-7ba8c218fe1so42871539f.3 for ; Thu, 04 Jan 2024 11:42:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1704397377; x=1705002177; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=3+J/P1s8879Vp+fzlyGqr2WWOHGZX3A10V1/imIkjd0=; b=ippr5impszhAyE88Isolx5kJ8Q3DYU3doweVByoLpHLaDLCFxasHH3aLGCZLMIjmkR xf9DAi3ztehOn2gSSrY1DMM5tUTjqN1+xpYzKcZf4ZF3dw5Zo2+3suKkhS+yxXOUy0Ve IW8yQYvfoXVvH3PRuN7QSAk1k9v0xcLMH0JQHKOozLY8Jwz7ACgQjBzTDuUXfMZqyRHX hQ2aea19lU0d+2vrJTktujzb3OpbL9S/PiOxSkQhPxGiMBrn2ATyKLsesv5mRs4WfRME AaBTOhRCMoI3qtZLJRJrJZUSyWcaBboH4HPXdygku8UimrmIObpRfzndKV7FcW2SrmGF ykQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704397377; x=1705002177; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=3+J/P1s8879Vp+fzlyGqr2WWOHGZX3A10V1/imIkjd0=; b=hd4shSdHAHxFGja8Gq1JX4wG3Duaus+RUgLau/g96M95yShOSGtb9dlPJKQLXDqhG4 kDz3WLguLNrBQMcClilT0vrZB124S9eP33WGtk/jOYCg7N+I7yIXCkkpJ9KKOwCRrH9f B6hoPF79UUaA/RN44Ulr97kIA2epGDSN1/l0UFmBtn0o/89cv4zwWvYOJViZzvnWbnSZ NPTNup/8R5Yjdw0xeS3oUqCrimepZu9Kcl1USaZf48aX4ioSCjJvmPOi3tzexXgoUMbP yy2bHgR/YcfLguyvsK2orBMGNEvV8nAE8M2sm94N96zdLmNEvi0dvQLPYITbceImPet9 urtQ== X-Gm-Message-State: AOJu0YzrokgOhs7mVLNT/6QFSM/pOpdWNJDo4lIrIMrtgRyJ0TyFrgkU WZ1qjJFl+8wZpZbhb7VuZjM7bjrPW6tTGA== X-Google-Smtp-Source: AGHT+IEcFdfob1Y4RZK+bTpddY/Z8yB4IPD/mUSajVsTBWGnio5958AQpFeVqy17OUHTBH8h9sJFng== X-Received: by 2002:a05:6e02:b47:b0:35f:7d16:c92d with SMTP id f7-20020a056e020b4700b0035f7d16c92dmr934521ilu.44.1704397377439; Thu, 04 Jan 2024 11:42:57 -0800 (PST) Received: from charlie.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id o10-20020a92daca000000b0035d0da89a0asm19606ilq.6.2024.01.04.11.42.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jan 2024 11:42:56 -0800 (PST) From: Charlie Jenkins Date: Thu, 04 Jan 2024 11:42:48 -0800 Subject: [PATCH v3 2/3] riscv: Correctly free relocation hashtable on error Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20240104-module_loading_fix-v3-2-a71f8de6ce0f@rivosinc.com> References: <20240104-module_loading_fix-v3-0-a71f8de6ce0f@rivosinc.com> In-Reply-To: <20240104-module_loading_fix-v3-0-a71f8de6ce0f@rivosinc.com> To: Paul Walmsley , Palmer Dabbelt , Albert Ou Cc: Palmer Dabbelt , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Charlie Jenkins , kernel test robot , Dan Carpenter , Julia Lawall X-Mailer: b4 0.12.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1704397374; l=2207; i=charlie@rivosinc.com; s=20231120; h=from:subject:message-id; bh=9/Y3gMnmhvp1aRf3YmkeyxHlGtG/ubuu7urxufGjwTE=; b=TmjQ+RDNWS877CIosFdTqru/YPzJhO1qbK90hdnM1iOCj2EuiBYwgA4iemJAzXyFiwoJGXHyh u7ieRn45cHtBbE8/eoFg2iQZWB5Lxtlqnoa83kDXjLsS1OHcL+boFcN X-Developer-Key: i=charlie@rivosinc.com; a=ed25519; pk=t4RSWpMV1q5lf/NWIeR9z58bcje60/dbtxxmoSfBEcs= When there is not enough allocatable memory for the relocation hashtable, module loading should exit gracefully. Previously, this was attempted to be accomplished by checking if an unsigned number is less than zero which does not work. Instead have the caller check if the hashtable was correctly allocated and add a comment explaining that hashtable_bits that is 0 is valid. Signed-off-by: Charlie Jenkins Fixes: d8792a5734b0 ("riscv: Safely remove entries from relocation list") Reported-by: kernel test robot Reported-by: Dan Carpenter Closes: https://lore.kernel.org/r/202312132019.iYGTwW0L-lkp@intel.com/ Reported-by: kernel test robot Reported-by: Julia Lawall Closes: https://lore.kernel.org/r/202312120044.wTI1Uyaa-lkp@intel.com/ Reviewed-by: Dan Carpenter --- arch/riscv/kernel/module.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/arch/riscv/kernel/module.c b/arch/riscv/kernel/module.c index 21c7a773a8ef..32743180e8ef 100644 --- a/arch/riscv/kernel/module.c +++ b/arch/riscv/kernel/module.c @@ -747,6 +747,10 @@ initialize_relocation_hashtable(unsigned int num_reloc= ations, { /* Can safely assume that bits is not greater than sizeof(long) */ unsigned long hashtable_size =3D roundup_pow_of_two(num_relocations); + /* + * When hashtable_size =3D=3D 1, hashtable_bits =3D=3D 0. + * This is valid because the hashing algorithm returns 0 in this case. + */ unsigned int hashtable_bits =3D ilog2(hashtable_size); =20 /* @@ -763,7 +767,7 @@ initialize_relocation_hashtable(unsigned int num_reloca= tions, sizeof(*relocation_hashtable), GFP_KERNEL); if (!*relocation_hashtable) - return -ENOMEM; + return 0; =20 __hash_init(*relocation_hashtable, hashtable_size); =20 @@ -789,8 +793,8 @@ int apply_relocate_add(Elf_Shdr *sechdrs, const char *s= trtab, hashtable_bits =3D initialize_relocation_hashtable(num_relocations, &relocation_hashtable); =20 - if (hashtable_bits < 0) - return hashtable_bits; + if (!relocation_hashtable) + return -ENOMEM; =20 INIT_LIST_HEAD(&used_buckets_list); =20 --=20 2.43.0 From nobody Fri Dec 26 13:17:30 2025 Received: from mail-il1-f171.google.com (mail-il1-f171.google.com [209.85.166.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6C83C2C6B9 for ; Thu, 4 Jan 2024 19:42:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b="t31Jxc6I" Received: by mail-il1-f171.google.com with SMTP id e9e14a558f8ab-3606ad581a5so2041095ab.1 for ; Thu, 04 Jan 2024 11:42:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1704397378; x=1705002178; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=zwpW8R3xYRcFeijiUFHaM884VPc1V+tX+SXLWnbPyzE=; b=t31Jxc6IjDIDFuriAo29YKsXR8UshY8Ea20epAztUpL50/EIjoJhRdxFl+qaGaSJ94 xFf5R0MWMeqIPpnCDJ64fFHmditFJbQuZ6vfkr622pixW1Y+12ogQUOEaD96+3pNw/A3 ydU8mjfqkLV8nRitzO9F8Kp/PwAAibZqcWvE1pGXONNCGVQgzBt09pKAqaukSOK/74Ri X6LiRteCMfwFrTEnT5ET7U+JIm+BeHu0AN3nesadEa3WaQgZc/V2DfKmKHJEC1caWiat SfMA6EqYoHQNe6J3MEEXUmDEZm20FgynEG41Cg0yqC78oa+J5Cegskyq9L/Kcxuvd8va EdEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704397378; x=1705002178; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=zwpW8R3xYRcFeijiUFHaM884VPc1V+tX+SXLWnbPyzE=; b=Gh9hirlbTGkkh3Fa+P7kAEq/iqlpfkfZ2YF4JWROV328jF8IsaE1lA6+LfX+pccUj8 3nYUrUJkmvjWTLW9VKy9AiH0IDGPpchY79Q3QlGFcl7JiibJ8cY5FJFZ+JX+U9z1zdR9 cuNElL2iJEZf36D6NBnMXH/G/Pu2pjiutv9LpHGKAf7JVB/Y0V4r6UkoQ/fBuakhAnMH IhTiZh7MYDis8l1krp/zVwLWUVwdShr8syMLyCvDLOkvbW4TnDcHviXAvjhqRAAFafTh btAKivjmfxTrjfy/8eaWRLqYXURb7rsOdRn+Y4ldiKjtB/FP2f9AvK+VuuEf0a2b/SNU aYjg== X-Gm-Message-State: AOJu0YzVIi6I2th5O5ZI1YIvvoYzwdg9JGvgJPX6JBS+QWSdHphTEZsn RpcYPS2LTsLOxwSsuUJJ8XDMXzm/apFCtA== X-Google-Smtp-Source: AGHT+IHT5RafxhxVkhoC7ZCG7auu1NWdb7RZx+i84274U3eQ2c8mka4bV5n112vi+aMJBdUfbRUZxQ== X-Received: by 2002:a05:6e02:170f:b0:35f:ca3f:fa67 with SMTP id u15-20020a056e02170f00b0035fca3ffa67mr1224476ill.43.1704397378523; Thu, 04 Jan 2024 11:42:58 -0800 (PST) Received: from charlie.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id o10-20020a92daca000000b0035d0da89a0asm19606ilq.6.2024.01.04.11.42.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jan 2024 11:42:58 -0800 (PST) From: Charlie Jenkins Date: Thu, 04 Jan 2024 11:42:49 -0800 Subject: [PATCH v3 3/3] riscv: Fix relocation_hashtable size Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20240104-module_loading_fix-v3-3-a71f8de6ce0f@rivosinc.com> References: <20240104-module_loading_fix-v3-0-a71f8de6ce0f@rivosinc.com> In-Reply-To: <20240104-module_loading_fix-v3-0-a71f8de6ce0f@rivosinc.com> To: Paul Walmsley , Palmer Dabbelt , Albert Ou Cc: Palmer Dabbelt , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Charlie Jenkins , kernel test robot , Julia Lawall X-Mailer: b4 0.12.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1704397374; l=1020; i=charlie@rivosinc.com; s=20231120; h=from:subject:message-id; bh=js9HmT4o7o8yl7lcSP3vcOE6sOgYhIQV9xZrhoMilzw=; b=oUTjSCnJ23EEXgoFiAFQOCyorLMnwVgQFC3OVXHU3L3GlTodRKu31Mb8jIU/r+O//70Beb63d HTFAbKyU+gjDCurro3YjGZ65fM4ysi2YV+LUAPTAIcM8RdGWr0teXfJ X-Developer-Key: i=charlie@rivosinc.com; a=ed25519; pk=t4RSWpMV1q5lf/NWIeR9z58bcje60/dbtxxmoSfBEcs= A second dereference is needed to get the accurate size of the relocation_hashtable. Signed-off-by: Charlie Jenkins Fixes: d8792a5734b0 ("riscv: Safely remove entries from relocation list") Reported-by: kernel test robot Reported-by: Julia Lawall Closes: https://lore.kernel.org/r/202312120044.wTI1Uyaa-lkp@intel.com/ Reviewed-by: Dan Carpenter --- arch/riscv/kernel/module.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/riscv/kernel/module.c b/arch/riscv/kernel/module.c index 32743180e8ef..ceb0adb38715 100644 --- a/arch/riscv/kernel/module.c +++ b/arch/riscv/kernel/module.c @@ -764,7 +764,7 @@ initialize_relocation_hashtable(unsigned int num_reloca= tions, hashtable_size <<=3D should_double_size; =20 *relocation_hashtable =3D kmalloc_array(hashtable_size, - sizeof(*relocation_hashtable), + sizeof(**relocation_hashtable), GFP_KERNEL); if (!*relocation_hashtable) return 0; --=20 2.43.0