Re: [PATCH v11 3/5] x86/boot: Add get_acpi_rsdp() to parse RSDP in cmdlien from kexec

From: Chao Fan
Date: Sun Nov 18 2018 - 20:16:45 EST


On Wed, Nov 14, 2018 at 07:30:17PM +0100, Borislav Petkov wrote:
>On Wed, Nov 14, 2018 at 02:12:16PM +0800, Chao Fan wrote:
>> But isdigit() would be redefine, so:
>>
>> diff --git a/include/linux/ctype.h b/include/linux/ctype.h
>> index 363b004426db..aba01c385232 100644
>> --- a/include/linux/ctype.h
>> +++ b/include/linux/ctype.h
>> @@ -23,10 +23,12 @@ extern const unsigned char _ctype[];
>> #define isalnum(c) ((__ismask(c)&(_U|_L|_D)) != 0)
>> #define isalpha(c) ((__ismask(c)&(_U|_L)) != 0)
>> #define iscntrl(c) ((__ismask(c)&(_C)) != 0)
>> +#ifndef BOOT_STRING
>> static inline int isdigit(int c)
>> {
>> return '0' <= c && c <= '9';
>> }
>> +#endif
>> #define isgraph(c) ((__ismask(c)&(_P|_U|_L|_D)) != 0)
>> #define islower(c) ((__ismask(c)&(_L)) != 0)
>> #define isprint(c) ((__ismask(c)&(_P|_U|_L|_D|_SP)) != 0)
>>
>> Now I can make it.
>> I wonder whether this is OK to cover isdigit() with 'BOOT_STRING' tag.
>
>See the beginning of arch/x86/boot/compressed/kaslr.c for a possible way
>to disable boot/ctype.h

I have done this with BOOT_CTYPE_H.
So misc.c can only use isdigit() and isxdigit() in
include/linux/ctype.h.

diff --git a/arch/x86/boot/compressed/misc.c b/arch/x86/boot/compressed/misc.c
index 8dd1d5ccae58..e51713fe3add 100644
--- a/arch/x86/boot/compressed/misc.c
+++ b/arch/x86/boot/compressed/misc.c
@@ -12,6 +12,7 @@
* High loaded stuff by Hans Lermen & Werner Almesberger, Feb. 1996
*/

+#define BOOT_CTYPE_H
#include "misc.h"
#include "error.h"
#include "pgtable.h"
@@ -426,3 +427,7 @@ void fortify_panic(const char *name)
{
error("detected buffer overflow");
}
+
+#ifdef BOOT_STRING
+#include "../../../../lib/kstrtox.c"
+#endif

This looks better than before.

Thanks,
Chao Fan

>
>--
>Regards/Gruss,
> Boris.
>
>Good mailing practices for 400: avoid top-posting and trim the reply.
>
>