[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4958DA54.8060003@gmx.de>
Date: Mon, 29 Dec 2008 15:10:28 +0100
From: Helge Deller <deller@....de>
To: linux-parisc@...r.kernel.org,
Linux Kernel Development <linux-kernel@...r.kernel.org>,
Kyle McMartin <kyle@...artin.ca>,
Randolph Chung <randolph@...sq.org>,
Moritz Muehlenhoff <jmm@...til.org>,
Linus <torvalds@...ux-foundation.org>,
Andrew Morton <akpm@...ux-foundation.org>
CC: Helge Deller <deller@....de>
Subject: [PATCH 2/2] parisc: fix module loading failure of large modules
[PATCH 2/2] parisc: fix module loading failure of large modules
On 32bit (and sometimes 64bit) and with big kernel modules like xfs or
ipv6 the relocation types R_PARISC_PCREL17F and R_PARISC_PCREL22F may
fail to reach their PLT stub if we only create one big stub array for
all sections at the beginning of the core or init section.
With this patch we now instead append individual PLT stub entries
directly at the end of the code sections where the stubs are actually
called. This reduces the distance between the PCREL location and the
stub entry so that the relocations can be fulfilled.
The kernel module loader will call module_additional_section_size() and
request us to return the amount of additional memory we need for the
stubs of each section. The final section size of the code segment will
then be increased by that value when the kernel layouts the final
addresses of all sections.
Tested with 32- and 64bit kernels.
Signed-off-by: Helge Deller <deller@....de>
View attachment "modules.patch2" of type "text/plain" (14084 bytes)
Powered by blists - more mailing lists