2022-08-02 10:18:26

by Liu Song

[permalink] [raw]
Subject: [PATCH] Kconfig: eliminate abnormal characters displayed under menuconfig

From: Liu Song <[email protected]>

Use "find ./linux/* | grep Kconfig | xargs file | grep UTF", can find
files with utf-8 encoded characters, these files will display garbled
characters in menuconfig, except for characters with special meanings
that cannot be modified, modify the characters with obvious errors to
eliminate the wrong display under meunconfig.

Signed-off-by: Liu Song <[email protected]>
Suggested-by: Bjorn Helgaas <[email protected]>
Acked-by: Randy Dunlap <[email protected]>
Tested-by: Randy Dunlap <[email protected]>
---
arch/Kconfig | 2 +-
drivers/pci/Kconfig | 2 +-
net/netfilter/ipvs/Kconfig | 8 ++++----
3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/arch/Kconfig b/arch/Kconfig
index 5ea3e38..2462337 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -745,7 +745,7 @@ config CFI_CLANG
depends on CLANG_VERSION >= 140000
select KALLSYMS
help
- This option enables Clang’s forward-edge Control Flow Integrity
+ This option enables Clang's forward-edge Control Flow Integrity
(CFI) checking, where the compiler injects a runtime check to each
indirect function call to ensure the target is a valid function with
the correct static type. This restricts possible call targets and
diff --git a/drivers/pci/Kconfig b/drivers/pci/Kconfig
index 133c732..8102b78 100644
--- a/drivers/pci/Kconfig
+++ b/drivers/pci/Kconfig
@@ -166,7 +166,7 @@ config PCI_P2PDMA
depends on ZONE_DEVICE
select GENERIC_ALLOCATOR
help
- Enableѕ drivers to do PCI peer-to-peer transactions to and from
+ Enables drivers to do PCI peer-to-peer transactions to and from
BARs that are exposed in other devices that are the part of
the hierarchy where peer-to-peer DMA is guaranteed by the PCI
specification to work (ie. anything below a single PCI bridge).
diff --git a/net/netfilter/ipvs/Kconfig b/net/netfilter/ipvs/Kconfig
index 271da84..06b9066 100644
--- a/net/netfilter/ipvs/Kconfig
+++ b/net/netfilter/ipvs/Kconfig
@@ -308,10 +308,10 @@ config IP_VS_MH_TAB_INDEX
stored in a hash table. This table is assigned by a preference
list of the positions to each destination until all slots in
the table are filled. The index determines the prime for size of
- the table as 251, 509, 1021, 2039, 4093, 8191, 16381, 32749,
- 65521 or 131071. When using weights to allow destinations to
- receive more connections, the table is assigned an amount
- proportional to the weights specified. The table needs to be large
+ the table as 251, 509, 1021, 2039, 4093, 8191, 16381, 32749,
+ 65521 or 131071. When using weights to allow destinations to
+ receive more connections, the table is assigned an amount
+ proportional to the weights specified. The table needs to be large
enough to effectively fit all the destinations multiplied by their
respective weights.

--
1.8.3.1



2022-08-09 02:56:39

by Bjorn Helgaas

[permalink] [raw]
Subject: Re: [PATCH] Kconfig: eliminate abnormal characters displayed under menuconfig

On Tue, Aug 02, 2022 at 06:12:33PM +0800, Liu Song wrote:
> From: Liu Song <[email protected]>
>
> Use "find ./linux/* | grep Kconfig | xargs file | grep UTF", can find
> files with utf-8 encoded characters, these files will display garbled
> characters in menuconfig, except for characters with special meanings
> that cannot be modified, modify the characters with obvious errors to
> eliminate the wrong display under meunconfig.
>
> Signed-off-by: Liu Song <[email protected]>
> Suggested-by: Bjorn Helgaas <[email protected]>

I did suggest fixing everything at once. But I think there are
actually two problems here. The first is that some are just wrong,
e.g., drivers/pci/Kconfig using CYRILLIC SMALL LETTER DZE instead of
"s", or net/netfilter/ipvs/Kconfig using NO-BREAK SPACE for no good
reason.

arch/Kconfig looks like it's using RIGHT SINGLE QUOTATION MARK instead
of the basic APOSTROPHE. That one is debatable; I think it's fair to
argue that RIGHT SINGLE QUOTATION MARK would be preferred if rendered
correctly.

The second problem is that I think menuconfig doesn't handle UTF-8
correctly. For example, in a gnome terminal with the default
LC_ALL=en_US.UTF-8, these look fine:

$ grep -A10 MTD_SPI_NOR_USE_4K_SECTORS drivers/mtd/spi-nor/Kconfig
...
64 KiB block instead of 16 × 4 KiB sectors.

$ grep -A1 MTD_NAND_CAFE drivers/mtd/nand/raw/Kconfig
config MTD_NAND_CAFE
tristate "OLPC CAFÉ NAND controller"

But when menuconfig in the same terminal displays that same text, it
looks like "16 ~W 4 KiB sectors" and "OLPC CAF ~I NAND".

On the other hand, gconfig and xconfig do render these correctly. So
I think there's something wrong with UTF-8 in menuconfig, and we
should fix that as well.

Anyway, I'm fine with this patch as far as it goes:

Acked-by: Bjorn Helgaas <[email protected]>

> Acked-by: Randy Dunlap <[email protected]>
> Tested-by: Randy Dunlap <[email protected]>
> ---
> arch/Kconfig | 2 +-
> drivers/pci/Kconfig | 2 +-
> net/netfilter/ipvs/Kconfig | 8 ++++----
> 3 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/arch/Kconfig b/arch/Kconfig
> index 5ea3e38..2462337 100644
> --- a/arch/Kconfig
> +++ b/arch/Kconfig
> @@ -745,7 +745,7 @@ config CFI_CLANG
> depends on CLANG_VERSION >= 140000
> select KALLSYMS
> help
> - This option enables Clang’s forward-edge Control Flow Integrity
> + This option enables Clang's forward-edge Control Flow Integrity
> (CFI) checking, where the compiler injects a runtime check to each
> indirect function call to ensure the target is a valid function with
> the correct static type. This restricts possible call targets and
> diff --git a/drivers/pci/Kconfig b/drivers/pci/Kconfig
> index 133c732..8102b78 100644
> --- a/drivers/pci/Kconfig
> +++ b/drivers/pci/Kconfig
> @@ -166,7 +166,7 @@ config PCI_P2PDMA
> depends on ZONE_DEVICE
> select GENERIC_ALLOCATOR
> help
> - Enableѕ drivers to do PCI peer-to-peer transactions to and from
> + Enables drivers to do PCI peer-to-peer transactions to and from
> BARs that are exposed in other devices that are the part of
> the hierarchy where peer-to-peer DMA is guaranteed by the PCI
> specification to work (ie. anything below a single PCI bridge).
> diff --git a/net/netfilter/ipvs/Kconfig b/net/netfilter/ipvs/Kconfig
> index 271da84..06b9066 100644
> --- a/net/netfilter/ipvs/Kconfig
> +++ b/net/netfilter/ipvs/Kconfig
> @@ -308,10 +308,10 @@ config IP_VS_MH_TAB_INDEX
> stored in a hash table. This table is assigned by a preference
> list of the positions to each destination until all slots in
> the table are filled. The index determines the prime for size of
> - the table as 251, 509, 1021, 2039, 4093, 8191, 16381, 32749,
> - 65521 or 131071. When using weights to allow destinations to
> - receive more connections, the table is assigned an amount
> - proportional to the weights specified. The table needs to be large
> + the table as 251, 509, 1021, 2039, 4093, 8191, 16381, 32749,
> + 65521 or 131071. When using weights to allow destinations to
> + receive more connections, the table is assigned an amount
> + proportional to the weights specified. The table needs to be large
> enough to effectively fit all the destinations multiplied by their
> respective weights.
>
> --
> 1.8.3.1
>

2022-08-15 17:27:32

by Simon Horman

[permalink] [raw]
Subject: Re: [PATCH] Kconfig: eliminate abnormal characters displayed under menuconfig

On Mon, Aug 08, 2022 at 09:51:47PM -0500, Bjorn Helgaas wrote:
> On Tue, Aug 02, 2022 at 06:12:33PM +0800, Liu Song wrote:
> > From: Liu Song <[email protected]>
> >
> > Use "find ./linux/* | grep Kconfig | xargs file | grep UTF", can find
> > files with utf-8 encoded characters, these files will display garbled
> > characters in menuconfig, except for characters with special meanings
> > that cannot be modified, modify the characters with obvious errors to
> > eliminate the wrong display under meunconfig.
> >
> > Signed-off-by: Liu Song <[email protected]>
> > Suggested-by: Bjorn Helgaas <[email protected]>
>
> I did suggest fixing everything at once. But I think there are
> actually two problems here. The first is that some are just wrong,
> e.g., drivers/pci/Kconfig using CYRILLIC SMALL LETTER DZE instead of
> "s", or net/netfilter/ipvs/Kconfig using NO-BREAK SPACE for no good
> reason.
>
> arch/Kconfig looks like it's using RIGHT SINGLE QUOTATION MARK instead
> of the basic APOSTROPHE. That one is debatable; I think it's fair to
> argue that RIGHT SINGLE QUOTATION MARK would be preferred if rendered
> correctly.
>
> The second problem is that I think menuconfig doesn't handle UTF-8
> correctly. For example, in a gnome terminal with the default
> LC_ALL=en_US.UTF-8, these look fine:
>
> $ grep -A10 MTD_SPI_NOR_USE_4K_SECTORS drivers/mtd/spi-nor/Kconfig
> ...
> 64 KiB block instead of 16 × 4 KiB sectors.
>
> $ grep -A1 MTD_NAND_CAFE drivers/mtd/nand/raw/Kconfig
> config MTD_NAND_CAFE
> tristate "OLPC CAFÉ NAND controller"
>
> But when menuconfig in the same terminal displays that same text, it
> looks like "16 ~W 4 KiB sectors" and "OLPC CAF ~I NAND".
>
> On the other hand, gconfig and xconfig do render these correctly. So
> I think there's something wrong with UTF-8 in menuconfig, and we
> should fix that as well.
>
> Anyway, I'm fine with this patch as far as it goes:
>
> Acked-by: Bjorn Helgaas <[email protected]>

IPVS portion:

Acked-by: Simon Horman <[email protected]>

2023-10-06 20:29:58

by Bjorn Helgaas

[permalink] [raw]
Subject: Re: [PATCH] Kconfig: eliminate abnormal characters displayed under menuconfig

On Tue, Aug 02, 2022 at 06:12:33PM +0800, Liu Song wrote:
> From: Liu Song <[email protected]>
>
> Use "find ./linux/* | grep Kconfig | xargs file | grep UTF", can find
> files with utf-8 encoded characters, these files will display garbled
> characters in menuconfig, except for characters with special meanings
> that cannot be modified, modify the characters with obvious errors to
> eliminate the wrong display under meunconfig.
>
> Signed-off-by: Liu Song <[email protected]>
> Suggested-by: Bjorn Helgaas <[email protected]>
> Acked-by: Randy Dunlap <[email protected]>
> Tested-by: Randy Dunlap <[email protected]>
> ---
> arch/Kconfig | 2 +-
> drivers/pci/Kconfig | 2 +-
> net/netfilter/ipvs/Kconfig | 8 ++++----
> 3 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/arch/Kconfig b/arch/Kconfig
> index 5ea3e38..2462337 100644
> --- a/arch/Kconfig
> +++ b/arch/Kconfig
> @@ -745,7 +745,7 @@ config CFI_CLANG
> depends on CLANG_VERSION >= 140000
> select KALLSYMS
> help
> - This option enables Clang’s forward-edge Control Flow Integrity
> + This option enables Clang's forward-edge Control Flow Integrity

Menuconfig renders as "Clang ~@~Ys forward-edge", so this really
should be fixed.

> (CFI) checking, where the compiler injects a runtime check to each
> indirect function call to ensure the target is a valid function with
> the correct static type. This restricts possible call targets and
> diff --git a/drivers/pci/Kconfig b/drivers/pci/Kconfig
> index 133c732..8102b78 100644
> --- a/drivers/pci/Kconfig
> +++ b/drivers/pci/Kconfig
> @@ -166,7 +166,7 @@ config PCI_P2PDMA
> depends on ZONE_DEVICE
> select GENERIC_ALLOCATOR
> help
> - Enableѕ drivers to do PCI peer-to-peer transactions to and from
> + Enables drivers to do PCI peer-to-peer transactions to and from

I applied this one by itself to the PCI tree.

> diff --git a/net/netfilter/ipvs/Kconfig b/net/netfilter/ipvs/Kconfig
> index 271da84..06b9066 100644
> --- a/net/netfilter/ipvs/Kconfig
> +++ b/net/netfilter/ipvs/Kconfig
> @@ -308,10 +308,10 @@ config IP_VS_MH_TAB_INDEX
> stored in a hash table. This table is assigned by a preference
> list of the positions to each destination until all slots in
> the table are filled. The index determines the prime for size of
> - the table as 251, 509, 1021, 2039, 4093, 8191, 16381, 32749,
> - 65521 or 131071. When using weights to allow destinations to
> - receive more connections, the table is assigned an amount
> - proportional to the weights specified. The table needs to be large
> + the table as 251, 509, 1021, 2039, 4093, 8191, 16381, 32749,
> + 65521 or 131071. When using weights to allow destinations to
> + receive more connections, the table is assigned an amount
> + proportional to the weights specified. The table needs to be large

Menuconfig renders this one fine either way, as far as I can tell.
It contains several "c2a0" (UTF-8 non-breaking space) characters:

00000180: 660a 0920 2074 6865 2074 6162 6c65 2061 f.. the table a
00000190: 73c2 a032 3531 2c20 3530 392c 2031 3032 s..251, 509, 102
^^ ^^
000001a0: 312c 2032 3033 392c 2034 3039 332c 2038 1, 2039, 4093, 8
000001b0: 3139 312c 2031 3633 3831 2c20 3332 3734 191, 16381, 3274
000001c0: 392c 0a09 2020 3635 3532 3120 6f72 2031 9,.. 65521 or 1
000001d0: 3331 3037 312e c2a0 5768 656e 2075 7369 31071...When usi
^^^^
000001e0: 6e67 2077 6569 6768 7473 2074 6f20 616c ng weights to al
000001f0: 6c6f 7720 6465 7374 696e 6174 696f 6e73 low destinations
00000200: 2074 6f0a 0920 2072 6563 6569 7665 206d to.. receive m
00000210: 6f72 6520 636f 6e6e 6563 7469 6f6e 732c ore connections,
00000220: c2a0 7468 6520 7461 626c 6520 6973 2061 ..the table is a
^^^^
00000230: 7373 6967 6e65 6420 616e 2061 6d6f 756e ssigned an amoun
00000240: 740a 0920 2070 726f 706f 7274 696f 6e61 t.. proportiona
00000250: 6c20 746f 2074 6865 2077 6569 6768 7473 l to the weights
00000260: 2073 7065 6369 6669 6564 2ec2 a054 6865 specified...The
^^ ^^


There are a few more ugly ones:

$ find * -name Kconfig\* | xargs grep --color -rIP "[^[:ascii:]]"
crypto/Kconfig: an ε-almost-∆-universal hash function, and an invocation of

CRYPTO_ADIANTUM
Renders as "an -almost- ~H~F-universal hash function"

drivers/mtd/nand/raw/Kconfig: tristate "OLPC CAFÉ NAND controller"
drivers/mtd/nand/raw/Kconfig: Use NAND flash attached to the CAFÉ chip designed for the OLPC

MTD_NAND_CAFE
Renders as "OLPC CAF ~I NAND controller".

drivers/mtd/spi-nor/Kconfig: 64 KiB block instead of 16 × 4 KiB sectors.

Renders as "64 KiB block instead of 16 ~W 4 KiB sectors."

drivers/net/can/usb/Kconfig:from Theobroma Systems like the A31-µQ7 and the RK3399-Q7

CAN_UCAN
Renders as "from Theobroma Systems like the A31- Q7 and the RK3399-Q7"

drivers/net/can/peak_canfd/Kconfig: operated with ambient temperatures in a range of -40 to +85 °C.

CAN_PEAK_PCIEFD
Renders as "operated with ambient temperatures in a range of -40 to
+85 C."

drivers/gpu/drm/panel/Kconfig: The panel has a 1200(RGB)×1920 (WUXGA) resolution and uses

DRM_PANEL_JDI_LT070ME05000
Renders as "The panel has a 1200(RGB) ~W1920 (WUXGA) resolution"

drivers/gpu/drm/panel/Kconfig: panel module. The panel has a 1024×600 resolution and uses

DRM_PANEL_TDO_TL070WSH30
Renders as "panel module. The panel has a 1024 ~W600 resolution"

drivers/platform/mellanox/Kconfig: The processor used on SN2201 is Intel Atom®Processor C Series,

CONFIG_NVSW_SN2201
Renders as "The processor used on SN2201 is Intel Atom Processor C Series,"
(Not terrible, just an extra space, but lost the (R))

drivers/platform/mellanox/Kconfig: System equipped with Nvidia®Spectrum-1 32x100GbE Ethernet switch.

Also CONFIG_NVSW_SN2201
Renders as "System equipped with Nvidia Spectrum-1 32x100GbE Ethernet switch."
(Again, just an extra space but lost the (R))

kernel/time/Kconfig: int "Clocksource watchdog maximum allowable skew (in μs)"

CLOCKSOURCE_WATCHDOG_MAX_SKEW_US
Renders as "Clocksource watchdog maximum allowable skew (in s)"
Clearly wrong.