From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7DB0429413; Sun, 5 May 2024 16:07:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714925267; cv=none; b=jB3s2c5fsYnANEwSMEOxD8EH3fXD8yVEpg5n0qfdFLkbq7/Q7m60shNeiUadafpQYn0FpxNQXGap9tFrorMvWiZrjrbZwRQ3WFu3g2yHQ/y1w9q0czeLDCIsASF5s33HLSHxUB6FcYofDgNutkud2SxrcntDPpjJcBdd2AuyG5o= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714925267; c=relaxed/simple; bh=vbQmVIViLlnHnV/HmsoDNHPWB+6N7x9rENWps4lsXos=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=kMoOwQquHcQY+7fHg2R2RDrUGfGMDuofcaIur/olz4uuKy7CvovTGmWV969vitCvthAwqNzwen3chr7BlxQ68gEUSfAHLqP2goeJO3a9f/UY2eBhRjnWu7OO8vsyIruUxkxUawmvHqo3gZM8MUSTu0E9bxgGurpSCB8Nt55ML+U= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=aAa5MSgJ; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="aAa5MSgJ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 21FD0C4DDE7; Sun, 5 May 2024 16:07:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1714925267; bh=vbQmVIViLlnHnV/HmsoDNHPWB+6N7x9rENWps4lsXos=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=aAa5MSgJQJM45G3HokYLiiJiOZDEeE2ajV8iw/yf1DX/fQ3Kmw6A3USHH0Ot5m3Op TVZYg1AWKghmbLAQnkVMS+GBWsm8aShhkYMk2oUWFTCwZ221sTIuktvc3sHgn5Di67 0I35GiFLFgXviW5AdRB+u7RdDHkgSpW6HhkZwMFM/gPwvOTBBTyPfyI73Civ8D9YvS rNWePZxZHMorQMyuKc+VCAWVVq3t2idHccNWlW0YiN3gXtGTvkETcE/v5FdYXJ2KJf LyxaKhxqABmwc9SmSM4tJ4eoIiC7UL7HsecM0w4e+PWxQYptDGBGAdqaW44NkUBYgt DP/ubOUkGv4RQ== From: Mike Rapoport To: linux-kernel@vger.kernel.org Cc: Alexandre Ghiti , Andrew Morton , =?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?= , Catalin Marinas , Christophe Leroy , "David S. Miller" , Dinh Nguyen , Donald Dutile , Eric Chanudet , Heiko Carstens , Helge Deller , Huacai Chen , Kent Overstreet , Liviu Dudau , Luis Chamberlain , Mark Rutland , Masami Hiramatsu , Michael Ellerman , Mike Rapoport , Nadav Amit , Palmer Dabbelt , Peter Zijlstra , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Rick Edgecombe , Russell King , Sam Ravnborg , Song Liu , Steven Rostedt , Thomas Bogendoerfer , Thomas Gleixner , Will Deacon , bpf@vger.kernel.org, linux-arch@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mips@vger.kernel.org, linux-mm@kvack.org, linux-modules@vger.kernel.org, linux-parisc@vger.kernel.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, loongarch@lists.linux.dev, netdev@vger.kernel.org, sparclinux@vger.kernel.org, x86@kernel.org Subject: [PATCH RESEND v8 05/16] module: make module_memory_{alloc,free} more self-contained Date: Sun, 5 May 2024 19:06:17 +0300 Message-ID: <20240505160628.2323363-6-rppt@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240505160628.2323363-1-rppt@kernel.org> References: <20240505160628.2323363-1-rppt@kernel.org> Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From: "Mike Rapoport (IBM)" Move the logic related to the memory allocation and freeing into module_memory_alloc() and module_memory_free(). Signed-off-by: Mike Rapoport (IBM) Reviewed-by: Philippe Mathieu-Daudé --- kernel/module/main.c | 64 +++++++++++++++++++++++++++----------------- 1 file changed, 39 insertions(+), 25 deletions(-) diff --git a/kernel/module/main.c b/kernel/module/main.c index e1e8a7a9d6c1..5b82b069e0d3 100644 --- a/kernel/module/main.c +++ b/kernel/module/main.c @@ -1203,15 +1203,44 @@ static bool mod_mem_use_vmalloc(enum mod_mem_type type) mod_mem_type_is_core_data(type); } -static void *module_memory_alloc(unsigned int size, enum mod_mem_type type) +static int module_memory_alloc(struct module *mod, enum mod_mem_type type) { + unsigned int size = PAGE_ALIGN(mod->mem[type].size); + void *ptr; + + mod->mem[type].size = size; + if (mod_mem_use_vmalloc(type)) - return vzalloc(size); - return module_alloc(size); + ptr = vmalloc(size); + else + ptr = module_alloc(size); + + if (!ptr) + return -ENOMEM; + + /* + * The pointer to these blocks of memory are stored on the module + * structure and we keep that around so long as the module is + * around. We only free that memory when we unload the module. + * Just mark them as not being a leak then. The .init* ELF + * sections *do* get freed after boot so we *could* treat them + * slightly differently with kmemleak_ignore() and only grey + * them out as they work as typical memory allocations which + * *do* eventually get freed, but let's just keep things simple + * and avoid *any* false positives. + */ + kmemleak_not_leak(ptr); + + memset(ptr, 0, size); + mod->mem[type].base = ptr; + + return 0; } -static void module_memory_free(void *ptr, enum mod_mem_type type) +static void module_memory_free(struct module *mod, enum mod_mem_type type) { + void *ptr = mod->mem[type].base; + if (mod_mem_use_vmalloc(type)) vfree(ptr); else @@ -1229,12 +1258,12 @@ static void free_mod_mem(struct module *mod) /* Free lock-classes; relies on the preceding sync_rcu(). */ lockdep_free_key_range(mod_mem->base, mod_mem->size); if (mod_mem->size) - module_memory_free(mod_mem->base, type); + module_memory_free(mod, type); } /* MOD_DATA hosts mod, so free it at last */ lockdep_free_key_range(mod->mem[MOD_DATA].base, mod->mem[MOD_DATA].size); - module_memory_free(mod->mem[MOD_DATA].base, MOD_DATA); + module_memory_free(mod, MOD_DATA); } /* Free a module, remove from lists, etc. */ @@ -2225,7 +2254,6 @@ static int find_module_sections(struct module *mod, struct load_info *info) static int move_module(struct module *mod, struct load_info *info) { int i; - void *ptr; enum mod_mem_type t = 0; int ret = -ENOMEM; @@ -2234,26 +2262,12 @@ static int move_module(struct module *mod, struct load_info *info) mod->mem[type].base = NULL; continue; } - mod->mem[type].size = PAGE_ALIGN(mod->mem[type].size); - ptr = module_memory_alloc(mod->mem[type].size, type); - /* - * The pointer to these blocks of memory are stored on the module - * structure and we keep that around so long as the module is - * around. We only free that memory when we unload the module. - * Just mark them as not being a leak then. The .init* ELF - * sections *do* get freed after boot so we *could* treat them - * slightly differently with kmemleak_ignore() and only grey - * them out as they work as typical memory allocations which - * *do* eventually get freed, but let's just keep things simple - * and avoid *any* false positives. - */ - kmemleak_not_leak(ptr); - if (!ptr) { + + ret = module_memory_alloc(mod, type); + if (ret) { t = type; goto out_enomem; } - memset(ptr, 0, mod->mem[type].size); - mod->mem[type].base = ptr; } /* Transfer each section which specifies SHF_ALLOC */ @@ -2296,7 +2310,7 @@ static int move_module(struct module *mod, struct load_info *info) return 0; out_enomem: for (t--; t >= 0; t--) - module_memory_free(mod->mem[t].base, t); + module_memory_free(mod, t); return ret; } -- 2.43.0 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 81895C4345F for ; Sun, 5 May 2024 16:08:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=MXM8cqldLSPhG+xS8opGbjpDP1jJqlMgbzjb/wvTqMU=; b=aATcJjz61YpREi NDGahTKSKueiDRDqV+Qwx09A85Id6TbE1ZMpH4rOsCbrP1vWyVKumCo7ptNT1NlBLpoRIpRamdQYv 2ihyMptRQUKLSHBXo6IpYQDiY6PGLlecty0rqc7qjm1zoTzRgzl8Yf3wyZ1cYsjKxOpBaVa9kLKL3 gUETLJhJUZlgw9ceU+DB4V2pidvQWiBxXj9fAZPzxog8izG6WuwrkUxCVUMjp+/DEJO4NCblff+vD 7tj7nxX7PSb74cgS+KtQFvkBNTCTNldCDbJv7+729Z6jv/Ch9hMwu+j6NmR/lLl54fIsdEP7c+ulN 6ICJ8mV5onNhloIjJ0OQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1s3ePE-00000004hex-1j1t; Sun, 05 May 2024 16:08:04 +0000 Received: from dfw.source.kernel.org ([139.178.84.217]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1s3eOy-00000004hPu-2hhG; Sun, 05 May 2024 16:07:56 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id B1F8F60CBB; Sun, 5 May 2024 16:07:47 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 21FD0C4DDE7; Sun, 5 May 2024 16:07:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1714925267; bh=vbQmVIViLlnHnV/HmsoDNHPWB+6N7x9rENWps4lsXos=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=aAa5MSgJQJM45G3HokYLiiJiOZDEeE2ajV8iw/yf1DX/fQ3Kmw6A3USHH0Ot5m3Op TVZYg1AWKghmbLAQnkVMS+GBWsm8aShhkYMk2oUWFTCwZ221sTIuktvc3sHgn5Di67 0I35GiFLFgXviW5AdRB+u7RdDHkgSpW6HhkZwMFM/gPwvOTBBTyPfyI73Civ8D9YvS rNWePZxZHMorQMyuKc+VCAWVVq3t2idHccNWlW0YiN3gXtGTvkETcE/v5FdYXJ2KJf LyxaKhxqABmwc9SmSM4tJ4eoIiC7UL7HsecM0w4e+PWxQYptDGBGAdqaW44NkUBYgt DP/ubOUkGv4RQ== From: Mike Rapoport To: linux-kernel@vger.kernel.org Cc: Alexandre Ghiti , Andrew Morton , =?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?= , Catalin Marinas , Christophe Leroy , "David S. Miller" , Dinh Nguyen , Donald Dutile , Eric Chanudet , Heiko Carstens , Helge Deller , Huacai Chen , Kent Overstreet , Liviu Dudau , Luis Chamberlain , Mark Rutland , Masami Hiramatsu , Michael Ellerman , Mike Rapoport , Nadav Amit , Palmer Dabbelt , Peter Zijlstra , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Rick Edgecombe , Russell King , Sam Ravnborg , Song Liu , Steven Rostedt , Thomas Bogendoerfer , Thomas Gleixner , Will Deacon , bpf@vger.kernel.org, linux-arch@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mips@vger.kernel.org, linux-mm@kvack.org, linux-modules@vger.kernel.org, linux-parisc@vger.kernel.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, loongarch@lists.linux.dev, netdev@vger.kernel.org, sparclinux@vger.kernel.org, x86@kernel.org Subject: [PATCH RESEND v8 05/16] module: make module_memory_{alloc,free} more self-contained Date: Sun, 5 May 2024 19:06:17 +0300 Message-ID: <20240505160628.2323363-6-rppt@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240505160628.2323363-1-rppt@kernel.org> References: <20240505160628.2323363-1-rppt@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240505_090748_933368_03B4CA27 X-CRM114-Status: GOOD ( 18.64 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org RnJvbTogIk1pa2UgUmFwb3BvcnQgKElCTSkiIDxycHB0QGtlcm5lbC5vcmc+CgpNb3ZlIHRoZSBs b2dpYyByZWxhdGVkIHRvIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgZnJlZWluZyBpbnRvCm1v ZHVsZV9tZW1vcnlfYWxsb2MoKSBhbmQgbW9kdWxlX21lbW9yeV9mcmVlKCkuCgpTaWduZWQtb2Zm LWJ5OiBNaWtlIFJhcG9wb3J0IChJQk0pIDxycHB0QGtlcm5lbC5vcmc+ClJldmlld2VkLWJ5OiBQ aGlsaXBwZSBNYXRoaWV1LURhdWTDqSA8cGhpbG1kQGxpbmFyby5vcmc+Ci0tLQoga2VybmVsL21v ZHVsZS9tYWluLmMgfCA2NCArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0t LS0tLQogMSBmaWxlIGNoYW5nZWQsIDM5IGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2tlcm5lbC9tb2R1bGUvbWFpbi5jIGIva2VybmVsL21vZHVsZS9tYWluLmMK aW5kZXggZTFlOGE3YTlkNmMxLi41YjgyYjA2OWUwZDMgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9tb2R1 bGUvbWFpbi5jCisrKyBiL2tlcm5lbC9tb2R1bGUvbWFpbi5jCkBAIC0xMjAzLDE1ICsxMjAzLDQ0 IEBAIHN0YXRpYyBib29sIG1vZF9tZW1fdXNlX3ZtYWxsb2MoZW51bSBtb2RfbWVtX3R5cGUgdHlw ZSkKIAkJbW9kX21lbV90eXBlX2lzX2NvcmVfZGF0YSh0eXBlKTsKIH0KIAotc3RhdGljIHZvaWQg Km1vZHVsZV9tZW1vcnlfYWxsb2ModW5zaWduZWQgaW50IHNpemUsIGVudW0gbW9kX21lbV90eXBl IHR5cGUpCitzdGF0aWMgaW50IG1vZHVsZV9tZW1vcnlfYWxsb2Moc3RydWN0IG1vZHVsZSAqbW9k LCBlbnVtIG1vZF9tZW1fdHlwZSB0eXBlKQogeworCXVuc2lnbmVkIGludCBzaXplID0gUEFHRV9B TElHTihtb2QtPm1lbVt0eXBlXS5zaXplKTsKKwl2b2lkICpwdHI7CisKKwltb2QtPm1lbVt0eXBl XS5zaXplID0gc2l6ZTsKKwogCWlmIChtb2RfbWVtX3VzZV92bWFsbG9jKHR5cGUpKQotCQlyZXR1 cm4gdnphbGxvYyhzaXplKTsKLQlyZXR1cm4gbW9kdWxlX2FsbG9jKHNpemUpOworCQlwdHIgPSB2 bWFsbG9jKHNpemUpOworCWVsc2UKKwkJcHRyID0gbW9kdWxlX2FsbG9jKHNpemUpOworCisJaWYg KCFwdHIpCisJCXJldHVybiAtRU5PTUVNOworCisJLyoKKwkgKiBUaGUgcG9pbnRlciB0byB0aGVz ZSBibG9ja3Mgb2YgbWVtb3J5IGFyZSBzdG9yZWQgb24gdGhlIG1vZHVsZQorCSAqIHN0cnVjdHVy ZSBhbmQgd2Uga2VlcCB0aGF0IGFyb3VuZCBzbyBsb25nIGFzIHRoZSBtb2R1bGUgaXMKKwkgKiBh cm91bmQuIFdlIG9ubHkgZnJlZSB0aGF0IG1lbW9yeSB3aGVuIHdlIHVubG9hZCB0aGUgbW9kdWxl LgorCSAqIEp1c3QgbWFyayB0aGVtIGFzIG5vdCBiZWluZyBhIGxlYWsgdGhlbi4gVGhlIC5pbml0 KiBFTEYKKwkgKiBzZWN0aW9ucyAqZG8qIGdldCBmcmVlZCBhZnRlciBib290IHNvIHdlICpjb3Vs ZCogdHJlYXQgdGhlbQorCSAqIHNsaWdodGx5IGRpZmZlcmVudGx5IHdpdGgga21lbWxlYWtfaWdu b3JlKCkgYW5kIG9ubHkgZ3JleQorCSAqIHRoZW0gb3V0IGFzIHRoZXkgd29yayBhcyB0eXBpY2Fs IG1lbW9yeSBhbGxvY2F0aW9ucyB3aGljaAorCSAqICpkbyogZXZlbnR1YWxseSBnZXQgZnJlZWQs IGJ1dCBsZXQncyBqdXN0IGtlZXAgdGhpbmdzIHNpbXBsZQorCSAqIGFuZCBhdm9pZCAqYW55KiBm YWxzZSBwb3NpdGl2ZXMuCisJICovCisJa21lbWxlYWtfbm90X2xlYWsocHRyKTsKKworCW1lbXNl dChwdHIsIDAsIHNpemUpOworCW1vZC0+bWVtW3R5cGVdLmJhc2UgPSBwdHI7CisKKwlyZXR1cm4g MDsKIH0KIAotc3RhdGljIHZvaWQgbW9kdWxlX21lbW9yeV9mcmVlKHZvaWQgKnB0ciwgZW51bSBt b2RfbWVtX3R5cGUgdHlwZSkKK3N0YXRpYyB2b2lkIG1vZHVsZV9tZW1vcnlfZnJlZShzdHJ1Y3Qg bW9kdWxlICptb2QsIGVudW0gbW9kX21lbV90eXBlIHR5cGUpCiB7CisJdm9pZCAqcHRyID0gbW9k LT5tZW1bdHlwZV0uYmFzZTsKKwogCWlmIChtb2RfbWVtX3VzZV92bWFsbG9jKHR5cGUpKQogCQl2 ZnJlZShwdHIpOwogCWVsc2UKQEAgLTEyMjksMTIgKzEyNTgsMTIgQEAgc3RhdGljIHZvaWQgZnJl ZV9tb2RfbWVtKHN0cnVjdCBtb2R1bGUgKm1vZCkKIAkJLyogRnJlZSBsb2NrLWNsYXNzZXM7IHJl bGllcyBvbiB0aGUgcHJlY2VkaW5nIHN5bmNfcmN1KCkuICovCiAJCWxvY2tkZXBfZnJlZV9rZXlf cmFuZ2UobW9kX21lbS0+YmFzZSwgbW9kX21lbS0+c2l6ZSk7CiAJCWlmIChtb2RfbWVtLT5zaXpl KQotCQkJbW9kdWxlX21lbW9yeV9mcmVlKG1vZF9tZW0tPmJhc2UsIHR5cGUpOworCQkJbW9kdWxl X21lbW9yeV9mcmVlKG1vZCwgdHlwZSk7CiAJfQogCiAJLyogTU9EX0RBVEEgaG9zdHMgbW9kLCBz byBmcmVlIGl0IGF0IGxhc3QgKi8KIAlsb2NrZGVwX2ZyZWVfa2V5X3JhbmdlKG1vZC0+bWVtW01P RF9EQVRBXS5iYXNlLCBtb2QtPm1lbVtNT0RfREFUQV0uc2l6ZSk7Ci0JbW9kdWxlX21lbW9yeV9m cmVlKG1vZC0+bWVtW01PRF9EQVRBXS5iYXNlLCBNT0RfREFUQSk7CisJbW9kdWxlX21lbW9yeV9m cmVlKG1vZCwgTU9EX0RBVEEpOwogfQogCiAvKiBGcmVlIGEgbW9kdWxlLCByZW1vdmUgZnJvbSBs aXN0cywgZXRjLiAqLwpAQCAtMjIyNSw3ICsyMjU0LDYgQEAgc3RhdGljIGludCBmaW5kX21vZHVs ZV9zZWN0aW9ucyhzdHJ1Y3QgbW9kdWxlICptb2QsIHN0cnVjdCBsb2FkX2luZm8gKmluZm8pCiBz dGF0aWMgaW50IG1vdmVfbW9kdWxlKHN0cnVjdCBtb2R1bGUgKm1vZCwgc3RydWN0IGxvYWRfaW5m byAqaW5mbykKIHsKIAlpbnQgaTsKLQl2b2lkICpwdHI7CiAJZW51bSBtb2RfbWVtX3R5cGUgdCA9 IDA7CiAJaW50IHJldCA9IC1FTk9NRU07CiAKQEAgLTIyMzQsMjYgKzIyNjIsMTIgQEAgc3RhdGlj IGludCBtb3ZlX21vZHVsZShzdHJ1Y3QgbW9kdWxlICptb2QsIHN0cnVjdCBsb2FkX2luZm8gKmlu Zm8pCiAJCQltb2QtPm1lbVt0eXBlXS5iYXNlID0gTlVMTDsKIAkJCWNvbnRpbnVlOwogCQl9Ci0J CW1vZC0+bWVtW3R5cGVdLnNpemUgPSBQQUdFX0FMSUdOKG1vZC0+bWVtW3R5cGVdLnNpemUpOwot CQlwdHIgPSBtb2R1bGVfbWVtb3J5X2FsbG9jKG1vZC0+bWVtW3R5cGVdLnNpemUsIHR5cGUpOwot CQkvKgotICAgICAgICAgICAgICAgICAqIFRoZSBwb2ludGVyIHRvIHRoZXNlIGJsb2NrcyBvZiBt ZW1vcnkgYXJlIHN0b3JlZCBvbiB0aGUgbW9kdWxlCi0gICAgICAgICAgICAgICAgICogc3RydWN0 dXJlIGFuZCB3ZSBrZWVwIHRoYXQgYXJvdW5kIHNvIGxvbmcgYXMgdGhlIG1vZHVsZSBpcwotICAg ICAgICAgICAgICAgICAqIGFyb3VuZC4gV2Ugb25seSBmcmVlIHRoYXQgbWVtb3J5IHdoZW4gd2Ug dW5sb2FkIHRoZSBtb2R1bGUuCi0gICAgICAgICAgICAgICAgICogSnVzdCBtYXJrIHRoZW0gYXMg bm90IGJlaW5nIGEgbGVhayB0aGVuLiBUaGUgLmluaXQqIEVMRgotICAgICAgICAgICAgICAgICAq IHNlY3Rpb25zICpkbyogZ2V0IGZyZWVkIGFmdGVyIGJvb3Qgc28gd2UgKmNvdWxkKiB0cmVhdCB0 aGVtCi0gICAgICAgICAgICAgICAgICogc2xpZ2h0bHkgZGlmZmVyZW50bHkgd2l0aCBrbWVtbGVh a19pZ25vcmUoKSBhbmQgb25seSBncmV5Ci0gICAgICAgICAgICAgICAgICogdGhlbSBvdXQgYXMg dGhleSB3b3JrIGFzIHR5cGljYWwgbWVtb3J5IGFsbG9jYXRpb25zIHdoaWNoCi0gICAgICAgICAg ICAgICAgICogKmRvKiBldmVudHVhbGx5IGdldCBmcmVlZCwgYnV0IGxldCdzIGp1c3Qga2VlcCB0 aGluZ3Mgc2ltcGxlCi0gICAgICAgICAgICAgICAgICogYW5kIGF2b2lkICphbnkqIGZhbHNlIHBv c2l0aXZlcy4KLQkJICovCi0JCWttZW1sZWFrX25vdF9sZWFrKHB0cik7Ci0JCWlmICghcHRyKSB7 CisKKwkJcmV0ID0gbW9kdWxlX21lbW9yeV9hbGxvYyhtb2QsIHR5cGUpOworCQlpZiAocmV0KSB7 CiAJCQl0ID0gdHlwZTsKIAkJCWdvdG8gb3V0X2Vub21lbTsKIAkJfQotCQltZW1zZXQocHRyLCAw LCBtb2QtPm1lbVt0eXBlXS5zaXplKTsKLQkJbW9kLT5tZW1bdHlwZV0uYmFzZSA9IHB0cjsKIAl9 CiAKIAkvKiBUcmFuc2ZlciBlYWNoIHNlY3Rpb24gd2hpY2ggc3BlY2lmaWVzIFNIRl9BTExPQyAq LwpAQCAtMjI5Niw3ICsyMzEwLDcgQEAgc3RhdGljIGludCBtb3ZlX21vZHVsZShzdHJ1Y3QgbW9k dWxlICptb2QsIHN0cnVjdCBsb2FkX2luZm8gKmluZm8pCiAJcmV0dXJuIDA7CiBvdXRfZW5vbWVt OgogCWZvciAodC0tOyB0ID49IDA7IHQtLSkKLQkJbW9kdWxlX21lbW9yeV9mcmVlKG1vZC0+bWVt W3RdLmJhc2UsIHQpOworCQltb2R1bGVfbWVtb3J5X2ZyZWUobW9kLCB0KTsKIAlyZXR1cm4gcmV0 OwogfQogCi0tIAoyLjQzLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpsaW51eC1yaXNjdiBtYWlsaW5nIGxpc3QKbGludXgtcmlzY3ZAbGlzdHMuaW5m cmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xp bnV4LXJpc2N2Cg== 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 lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 04108C4345F for ; Sun, 5 May 2024 16:11:06 +0000 (UTC) Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20201202 header.b=aAa5MSgJ; dkim-atps=neutral Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4VXTzr4J48z3dXD for ; Mon, 6 May 2024 02:11:04 +1000 (AEST) Authentication-Results: lists.ozlabs.org; dmarc=pass (p=none dis=none) header.from=kernel.org Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20201202 header.b=aAa5MSgJ; dkim-atps=neutral Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=kernel.org (client-ip=2604:1380:4641:c500::1; helo=dfw.source.kernel.org; envelope-from=rppt@kernel.org; receiver=lists.ozlabs.org) Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4VXTw53zf6z3ckp for ; Mon, 6 May 2024 02:07:49 +1000 (AEST) Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id B1F8F60CBB; Sun, 5 May 2024 16:07:47 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 21FD0C4DDE7; Sun, 5 May 2024 16:07:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1714925267; bh=vbQmVIViLlnHnV/HmsoDNHPWB+6N7x9rENWps4lsXos=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=aAa5MSgJQJM45G3HokYLiiJiOZDEeE2ajV8iw/yf1DX/fQ3Kmw6A3USHH0Ot5m3Op TVZYg1AWKghmbLAQnkVMS+GBWsm8aShhkYMk2oUWFTCwZ221sTIuktvc3sHgn5Di67 0I35GiFLFgXviW5AdRB+u7RdDHkgSpW6HhkZwMFM/gPwvOTBBTyPfyI73Civ8D9YvS rNWePZxZHMorQMyuKc+VCAWVVq3t2idHccNWlW0YiN3gXtGTvkETcE/v5FdYXJ2KJf LyxaKhxqABmwc9SmSM4tJ4eoIiC7UL7HsecM0w4e+PWxQYptDGBGAdqaW44NkUBYgt DP/ubOUkGv4RQ== From: Mike Rapoport To: linux-kernel@vger.kernel.org Subject: [PATCH RESEND v8 05/16] module: make module_memory_{alloc,free} more self-contained Date: Sun, 5 May 2024 19:06:17 +0300 Message-ID: <20240505160628.2323363-6-rppt@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240505160628.2323363-1-rppt@kernel.org> References: <20240505160628.2323363-1-rppt@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , x86@kernel.org, Sam Ravnborg , Peter Zijlstra , Catalin Marinas , Russell King , Song Liu , Donald Dutile , sparclinux@vger.kernel.org, linux-riscv@lists.infradead.org, Nadav Amit , linux-arch@vger.kernel.org, linux-s390@vger.kernel.org, Helge Deller , Huacai Chen , =?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?= , linux-trace-kernel@vger.kernel.org, Alexandre Ghiti , Will Deacon , Heiko Carstens , Steven Rostedt , loongarch@lists.linux.dev, Thomas Gleixner , bpf@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Liviu Dudau , Thomas Bogendoerfer , linux-parisc@vger.kernel.org, =?UTF-8?q?Philippe=20Mathieu-D aud=C3=A9?= , linux-mm@kvack.org, netdev@vger.kernel.org, Kent Overstreet , linux-mips@vger.kernel.org, Dinh Nguyen , Luis Chamberlain , Eric Chanudet , Palmer Dabbelt , Masami Hiramatsu , linux-modules@vger.kernel.org, Andrew Morton , Rick Edgecombe , linuxppc-dev@lists.ozlabs.org, "David S. Miller" , Mike Rapoport Errors-To: linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Sender: "Linuxppc-dev" From: "Mike Rapoport (IBM)" Move the logic related to the memory allocation and freeing into module_memory_alloc() and module_memory_free(). Signed-off-by: Mike Rapoport (IBM) Reviewed-by: Philippe Mathieu-Daudé --- kernel/module/main.c | 64 +++++++++++++++++++++++++++----------------- 1 file changed, 39 insertions(+), 25 deletions(-) diff --git a/kernel/module/main.c b/kernel/module/main.c index e1e8a7a9d6c1..5b82b069e0d3 100644 --- a/kernel/module/main.c +++ b/kernel/module/main.c @@ -1203,15 +1203,44 @@ static bool mod_mem_use_vmalloc(enum mod_mem_type type) mod_mem_type_is_core_data(type); } -static void *module_memory_alloc(unsigned int size, enum mod_mem_type type) +static int module_memory_alloc(struct module *mod, enum mod_mem_type type) { + unsigned int size = PAGE_ALIGN(mod->mem[type].size); + void *ptr; + + mod->mem[type].size = size; + if (mod_mem_use_vmalloc(type)) - return vzalloc(size); - return module_alloc(size); + ptr = vmalloc(size); + else + ptr = module_alloc(size); + + if (!ptr) + return -ENOMEM; + + /* + * The pointer to these blocks of memory are stored on the module + * structure and we keep that around so long as the module is + * around. We only free that memory when we unload the module. + * Just mark them as not being a leak then. The .init* ELF + * sections *do* get freed after boot so we *could* treat them + * slightly differently with kmemleak_ignore() and only grey + * them out as they work as typical memory allocations which + * *do* eventually get freed, but let's just keep things simple + * and avoid *any* false positives. + */ + kmemleak_not_leak(ptr); + + memset(ptr, 0, size); + mod->mem[type].base = ptr; + + return 0; } -static void module_memory_free(void *ptr, enum mod_mem_type type) +static void module_memory_free(struct module *mod, enum mod_mem_type type) { + void *ptr = mod->mem[type].base; + if (mod_mem_use_vmalloc(type)) vfree(ptr); else @@ -1229,12 +1258,12 @@ static void free_mod_mem(struct module *mod) /* Free lock-classes; relies on the preceding sync_rcu(). */ lockdep_free_key_range(mod_mem->base, mod_mem->size); if (mod_mem->size) - module_memory_free(mod_mem->base, type); + module_memory_free(mod, type); } /* MOD_DATA hosts mod, so free it at last */ lockdep_free_key_range(mod->mem[MOD_DATA].base, mod->mem[MOD_DATA].size); - module_memory_free(mod->mem[MOD_DATA].base, MOD_DATA); + module_memory_free(mod, MOD_DATA); } /* Free a module, remove from lists, etc. */ @@ -2225,7 +2254,6 @@ static int find_module_sections(struct module *mod, struct load_info *info) static int move_module(struct module *mod, struct load_info *info) { int i; - void *ptr; enum mod_mem_type t = 0; int ret = -ENOMEM; @@ -2234,26 +2262,12 @@ static int move_module(struct module *mod, struct load_info *info) mod->mem[type].base = NULL; continue; } - mod->mem[type].size = PAGE_ALIGN(mod->mem[type].size); - ptr = module_memory_alloc(mod->mem[type].size, type); - /* - * The pointer to these blocks of memory are stored on the module - * structure and we keep that around so long as the module is - * around. We only free that memory when we unload the module. - * Just mark them as not being a leak then. The .init* ELF - * sections *do* get freed after boot so we *could* treat them - * slightly differently with kmemleak_ignore() and only grey - * them out as they work as typical memory allocations which - * *do* eventually get freed, but let's just keep things simple - * and avoid *any* false positives. - */ - kmemleak_not_leak(ptr); - if (!ptr) { + + ret = module_memory_alloc(mod, type); + if (ret) { t = type; goto out_enomem; } - memset(ptr, 0, mod->mem[type].size); - mod->mem[type].base = ptr; } /* Transfer each section which specifies SHF_ALLOC */ @@ -2296,7 +2310,7 @@ static int move_module(struct module *mod, struct load_info *info) return 0; out_enomem: for (t--; t >= 0; t--) - module_memory_free(mod->mem[t].base, t); + module_memory_free(mod, t); return ret; } -- 2.43.0 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A8358C25B10 for ; Sun, 5 May 2024 16:08:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=MCcG9/GARd4Jg/eqJAC6EzkdutrZ3JENZ4GAjXV8ie0=; b=wLxO734AgRas+w Y3dz2MaX28txIz0yiHV5i/scJ+zdUsksIt6rOmify3JsKoUESLvpxzpJq1OzE41GreP9/Vihe3mVc qJJ70TWuGX2oRDFUvk3KMwbWjCSBbCLGnf148XTUw1GH9oGWdMsgDRpFjxr9ibUATIshMsyH3AaD3 dPhUsRDdL/hSrqD9Zk3klViV6wOn55lzA2oC1R3GrM11nH92qhqIwEKfeWBVTfXa/H7PX4FNJvUPQ Ac6pUP3EmQNPQMa4tQ5WGRNbdX7kmE0B5rud87SZixye0iMet3+wZg5DsRUNTGYTdNtKmyot8BXu+ tn2Blsww6UL7JjIb6I2w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1s3eP9-00000004hb3-31v6; Sun, 05 May 2024 16:07:59 +0000 Received: from dfw.source.kernel.org ([139.178.84.217]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1s3eOy-00000004hPu-2hhG; Sun, 05 May 2024 16:07:56 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id B1F8F60CBB; Sun, 5 May 2024 16:07:47 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 21FD0C4DDE7; Sun, 5 May 2024 16:07:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1714925267; bh=vbQmVIViLlnHnV/HmsoDNHPWB+6N7x9rENWps4lsXos=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=aAa5MSgJQJM45G3HokYLiiJiOZDEeE2ajV8iw/yf1DX/fQ3Kmw6A3USHH0Ot5m3Op TVZYg1AWKghmbLAQnkVMS+GBWsm8aShhkYMk2oUWFTCwZ221sTIuktvc3sHgn5Di67 0I35GiFLFgXviW5AdRB+u7RdDHkgSpW6HhkZwMFM/gPwvOTBBTyPfyI73Civ8D9YvS rNWePZxZHMorQMyuKc+VCAWVVq3t2idHccNWlW0YiN3gXtGTvkETcE/v5FdYXJ2KJf LyxaKhxqABmwc9SmSM4tJ4eoIiC7UL7HsecM0w4e+PWxQYptDGBGAdqaW44NkUBYgt DP/ubOUkGv4RQ== From: Mike Rapoport To: linux-kernel@vger.kernel.org Cc: Alexandre Ghiti , Andrew Morton , =?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?= , Catalin Marinas , Christophe Leroy , "David S. Miller" , Dinh Nguyen , Donald Dutile , Eric Chanudet , Heiko Carstens , Helge Deller , Huacai Chen , Kent Overstreet , Liviu Dudau , Luis Chamberlain , Mark Rutland , Masami Hiramatsu , Michael Ellerman , Mike Rapoport , Nadav Amit , Palmer Dabbelt , Peter Zijlstra , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Rick Edgecombe , Russell King , Sam Ravnborg , Song Liu , Steven Rostedt , Thomas Bogendoerfer , Thomas Gleixner , Will Deacon , bpf@vger.kernel.org, linux-arch@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mips@vger.kernel.org, linux-mm@kvack.org, linux-modules@vger.kernel.org, linux-parisc@vger.kernel.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, loongarch@lists.linux.dev, netdev@vger.kernel.org, sparclinux@vger.kernel.org, x86@kernel.org Subject: [PATCH RESEND v8 05/16] module: make module_memory_{alloc,free} more self-contained Date: Sun, 5 May 2024 19:06:17 +0300 Message-ID: <20240505160628.2323363-6-rppt@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240505160628.2323363-1-rppt@kernel.org> References: <20240505160628.2323363-1-rppt@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240505_090748_933368_03B4CA27 X-CRM114-Status: GOOD ( 18.64 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org RnJvbTogIk1pa2UgUmFwb3BvcnQgKElCTSkiIDxycHB0QGtlcm5lbC5vcmc+CgpNb3ZlIHRoZSBs b2dpYyByZWxhdGVkIHRvIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgZnJlZWluZyBpbnRvCm1v ZHVsZV9tZW1vcnlfYWxsb2MoKSBhbmQgbW9kdWxlX21lbW9yeV9mcmVlKCkuCgpTaWduZWQtb2Zm LWJ5OiBNaWtlIFJhcG9wb3J0IChJQk0pIDxycHB0QGtlcm5lbC5vcmc+ClJldmlld2VkLWJ5OiBQ aGlsaXBwZSBNYXRoaWV1LURhdWTDqSA8cGhpbG1kQGxpbmFyby5vcmc+Ci0tLQoga2VybmVsL21v ZHVsZS9tYWluLmMgfCA2NCArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0t LS0tLQogMSBmaWxlIGNoYW5nZWQsIDM5IGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2tlcm5lbC9tb2R1bGUvbWFpbi5jIGIva2VybmVsL21vZHVsZS9tYWluLmMK aW5kZXggZTFlOGE3YTlkNmMxLi41YjgyYjA2OWUwZDMgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9tb2R1 bGUvbWFpbi5jCisrKyBiL2tlcm5lbC9tb2R1bGUvbWFpbi5jCkBAIC0xMjAzLDE1ICsxMjAzLDQ0 IEBAIHN0YXRpYyBib29sIG1vZF9tZW1fdXNlX3ZtYWxsb2MoZW51bSBtb2RfbWVtX3R5cGUgdHlw ZSkKIAkJbW9kX21lbV90eXBlX2lzX2NvcmVfZGF0YSh0eXBlKTsKIH0KIAotc3RhdGljIHZvaWQg Km1vZHVsZV9tZW1vcnlfYWxsb2ModW5zaWduZWQgaW50IHNpemUsIGVudW0gbW9kX21lbV90eXBl IHR5cGUpCitzdGF0aWMgaW50IG1vZHVsZV9tZW1vcnlfYWxsb2Moc3RydWN0IG1vZHVsZSAqbW9k LCBlbnVtIG1vZF9tZW1fdHlwZSB0eXBlKQogeworCXVuc2lnbmVkIGludCBzaXplID0gUEFHRV9B TElHTihtb2QtPm1lbVt0eXBlXS5zaXplKTsKKwl2b2lkICpwdHI7CisKKwltb2QtPm1lbVt0eXBl XS5zaXplID0gc2l6ZTsKKwogCWlmIChtb2RfbWVtX3VzZV92bWFsbG9jKHR5cGUpKQotCQlyZXR1 cm4gdnphbGxvYyhzaXplKTsKLQlyZXR1cm4gbW9kdWxlX2FsbG9jKHNpemUpOworCQlwdHIgPSB2 bWFsbG9jKHNpemUpOworCWVsc2UKKwkJcHRyID0gbW9kdWxlX2FsbG9jKHNpemUpOworCisJaWYg KCFwdHIpCisJCXJldHVybiAtRU5PTUVNOworCisJLyoKKwkgKiBUaGUgcG9pbnRlciB0byB0aGVz ZSBibG9ja3Mgb2YgbWVtb3J5IGFyZSBzdG9yZWQgb24gdGhlIG1vZHVsZQorCSAqIHN0cnVjdHVy ZSBhbmQgd2Uga2VlcCB0aGF0IGFyb3VuZCBzbyBsb25nIGFzIHRoZSBtb2R1bGUgaXMKKwkgKiBh cm91bmQuIFdlIG9ubHkgZnJlZSB0aGF0IG1lbW9yeSB3aGVuIHdlIHVubG9hZCB0aGUgbW9kdWxl LgorCSAqIEp1c3QgbWFyayB0aGVtIGFzIG5vdCBiZWluZyBhIGxlYWsgdGhlbi4gVGhlIC5pbml0 KiBFTEYKKwkgKiBzZWN0aW9ucyAqZG8qIGdldCBmcmVlZCBhZnRlciBib290IHNvIHdlICpjb3Vs ZCogdHJlYXQgdGhlbQorCSAqIHNsaWdodGx5IGRpZmZlcmVudGx5IHdpdGgga21lbWxlYWtfaWdu b3JlKCkgYW5kIG9ubHkgZ3JleQorCSAqIHRoZW0gb3V0IGFzIHRoZXkgd29yayBhcyB0eXBpY2Fs IG1lbW9yeSBhbGxvY2F0aW9ucyB3aGljaAorCSAqICpkbyogZXZlbnR1YWxseSBnZXQgZnJlZWQs IGJ1dCBsZXQncyBqdXN0IGtlZXAgdGhpbmdzIHNpbXBsZQorCSAqIGFuZCBhdm9pZCAqYW55KiBm YWxzZSBwb3NpdGl2ZXMuCisJICovCisJa21lbWxlYWtfbm90X2xlYWsocHRyKTsKKworCW1lbXNl dChwdHIsIDAsIHNpemUpOworCW1vZC0+bWVtW3R5cGVdLmJhc2UgPSBwdHI7CisKKwlyZXR1cm4g MDsKIH0KIAotc3RhdGljIHZvaWQgbW9kdWxlX21lbW9yeV9mcmVlKHZvaWQgKnB0ciwgZW51bSBt b2RfbWVtX3R5cGUgdHlwZSkKK3N0YXRpYyB2b2lkIG1vZHVsZV9tZW1vcnlfZnJlZShzdHJ1Y3Qg bW9kdWxlICptb2QsIGVudW0gbW9kX21lbV90eXBlIHR5cGUpCiB7CisJdm9pZCAqcHRyID0gbW9k LT5tZW1bdHlwZV0uYmFzZTsKKwogCWlmIChtb2RfbWVtX3VzZV92bWFsbG9jKHR5cGUpKQogCQl2 ZnJlZShwdHIpOwogCWVsc2UKQEAgLTEyMjksMTIgKzEyNTgsMTIgQEAgc3RhdGljIHZvaWQgZnJl ZV9tb2RfbWVtKHN0cnVjdCBtb2R1bGUgKm1vZCkKIAkJLyogRnJlZSBsb2NrLWNsYXNzZXM7IHJl bGllcyBvbiB0aGUgcHJlY2VkaW5nIHN5bmNfcmN1KCkuICovCiAJCWxvY2tkZXBfZnJlZV9rZXlf cmFuZ2UobW9kX21lbS0+YmFzZSwgbW9kX21lbS0+c2l6ZSk7CiAJCWlmIChtb2RfbWVtLT5zaXpl KQotCQkJbW9kdWxlX21lbW9yeV9mcmVlKG1vZF9tZW0tPmJhc2UsIHR5cGUpOworCQkJbW9kdWxl X21lbW9yeV9mcmVlKG1vZCwgdHlwZSk7CiAJfQogCiAJLyogTU9EX0RBVEEgaG9zdHMgbW9kLCBz byBmcmVlIGl0IGF0IGxhc3QgKi8KIAlsb2NrZGVwX2ZyZWVfa2V5X3JhbmdlKG1vZC0+bWVtW01P RF9EQVRBXS5iYXNlLCBtb2QtPm1lbVtNT0RfREFUQV0uc2l6ZSk7Ci0JbW9kdWxlX21lbW9yeV9m cmVlKG1vZC0+bWVtW01PRF9EQVRBXS5iYXNlLCBNT0RfREFUQSk7CisJbW9kdWxlX21lbW9yeV9m cmVlKG1vZCwgTU9EX0RBVEEpOwogfQogCiAvKiBGcmVlIGEgbW9kdWxlLCByZW1vdmUgZnJvbSBs aXN0cywgZXRjLiAqLwpAQCAtMjIyNSw3ICsyMjU0LDYgQEAgc3RhdGljIGludCBmaW5kX21vZHVs ZV9zZWN0aW9ucyhzdHJ1Y3QgbW9kdWxlICptb2QsIHN0cnVjdCBsb2FkX2luZm8gKmluZm8pCiBz dGF0aWMgaW50IG1vdmVfbW9kdWxlKHN0cnVjdCBtb2R1bGUgKm1vZCwgc3RydWN0IGxvYWRfaW5m byAqaW5mbykKIHsKIAlpbnQgaTsKLQl2b2lkICpwdHI7CiAJZW51bSBtb2RfbWVtX3R5cGUgdCA9 IDA7CiAJaW50IHJldCA9IC1FTk9NRU07CiAKQEAgLTIyMzQsMjYgKzIyNjIsMTIgQEAgc3RhdGlj IGludCBtb3ZlX21vZHVsZShzdHJ1Y3QgbW9kdWxlICptb2QsIHN0cnVjdCBsb2FkX2luZm8gKmlu Zm8pCiAJCQltb2QtPm1lbVt0eXBlXS5iYXNlID0gTlVMTDsKIAkJCWNvbnRpbnVlOwogCQl9Ci0J CW1vZC0+bWVtW3R5cGVdLnNpemUgPSBQQUdFX0FMSUdOKG1vZC0+bWVtW3R5cGVdLnNpemUpOwot CQlwdHIgPSBtb2R1bGVfbWVtb3J5X2FsbG9jKG1vZC0+bWVtW3R5cGVdLnNpemUsIHR5cGUpOwot CQkvKgotICAgICAgICAgICAgICAgICAqIFRoZSBwb2ludGVyIHRvIHRoZXNlIGJsb2NrcyBvZiBt ZW1vcnkgYXJlIHN0b3JlZCBvbiB0aGUgbW9kdWxlCi0gICAgICAgICAgICAgICAgICogc3RydWN0 dXJlIGFuZCB3ZSBrZWVwIHRoYXQgYXJvdW5kIHNvIGxvbmcgYXMgdGhlIG1vZHVsZSBpcwotICAg ICAgICAgICAgICAgICAqIGFyb3VuZC4gV2Ugb25seSBmcmVlIHRoYXQgbWVtb3J5IHdoZW4gd2Ug dW5sb2FkIHRoZSBtb2R1bGUuCi0gICAgICAgICAgICAgICAgICogSnVzdCBtYXJrIHRoZW0gYXMg bm90IGJlaW5nIGEgbGVhayB0aGVuLiBUaGUgLmluaXQqIEVMRgotICAgICAgICAgICAgICAgICAq IHNlY3Rpb25zICpkbyogZ2V0IGZyZWVkIGFmdGVyIGJvb3Qgc28gd2UgKmNvdWxkKiB0cmVhdCB0 aGVtCi0gICAgICAgICAgICAgICAgICogc2xpZ2h0bHkgZGlmZmVyZW50bHkgd2l0aCBrbWVtbGVh a19pZ25vcmUoKSBhbmQgb25seSBncmV5Ci0gICAgICAgICAgICAgICAgICogdGhlbSBvdXQgYXMg dGhleSB3b3JrIGFzIHR5cGljYWwgbWVtb3J5IGFsbG9jYXRpb25zIHdoaWNoCi0gICAgICAgICAg ICAgICAgICogKmRvKiBldmVudHVhbGx5IGdldCBmcmVlZCwgYnV0IGxldCdzIGp1c3Qga2VlcCB0 aGluZ3Mgc2ltcGxlCi0gICAgICAgICAgICAgICAgICogYW5kIGF2b2lkICphbnkqIGZhbHNlIHBv c2l0aXZlcy4KLQkJICovCi0JCWttZW1sZWFrX25vdF9sZWFrKHB0cik7Ci0JCWlmICghcHRyKSB7 CisKKwkJcmV0ID0gbW9kdWxlX21lbW9yeV9hbGxvYyhtb2QsIHR5cGUpOworCQlpZiAocmV0KSB7 CiAJCQl0ID0gdHlwZTsKIAkJCWdvdG8gb3V0X2Vub21lbTsKIAkJfQotCQltZW1zZXQocHRyLCAw LCBtb2QtPm1lbVt0eXBlXS5zaXplKTsKLQkJbW9kLT5tZW1bdHlwZV0uYmFzZSA9IHB0cjsKIAl9 CiAKIAkvKiBUcmFuc2ZlciBlYWNoIHNlY3Rpb24gd2hpY2ggc3BlY2lmaWVzIFNIRl9BTExPQyAq LwpAQCAtMjI5Niw3ICsyMzEwLDcgQEAgc3RhdGljIGludCBtb3ZlX21vZHVsZShzdHJ1Y3QgbW9k dWxlICptb2QsIHN0cnVjdCBsb2FkX2luZm8gKmluZm8pCiAJcmV0dXJuIDA7CiBvdXRfZW5vbWVt OgogCWZvciAodC0tOyB0ID49IDA7IHQtLSkKLQkJbW9kdWxlX21lbW9yeV9mcmVlKG1vZC0+bWVt W3RdLmJhc2UsIHQpOworCQltb2R1bGVfbWVtb3J5X2ZyZWUobW9kLCB0KTsKIAlyZXR1cm4gcmV0 OwogfQogCi0tIAoyLjQzLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVs QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9s aXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==