lkml.org 
[lkml]   [2022]   [Dec]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[RFC PATCH v2 00/18] fs: Remove usage of broken nls_utf8 and drop it
    Date
    Module nls_utf8 is broken in several ways. It does not support (full)
    UTF-8, despite its name. It cannot handle 4-byte UTF-8 sequences and
    tolower/toupper table is not implemented at all. Which means that it is
    not suitable for usage in case-insensitive filesystems or UTF-16
    filesystems (because of e.g. missing UTF-16 surrogate pairs processing).

    This is RFC v2 patch series which unify and fix iocharset=utf8 mount
    option in all fs drivers and converts all remaining fs drivers to use
    utf8s_to_utf16s(), utf16s_to_utf8s(), utf8_to_utf32(), utf32_to_utf8
    functions for implementing UTF-8 support instead of nls_utf8.

    So at the end it allows to completely drop this broken nls_utf8 module.

    For more details look at email thread where was discussed fs unification:
    https://lore.kernel.org/linux-fsdevel/20200102211855.gg62r7jshp742d6i@pali/t/#u

    This patch series is mostly untested and presented as RFC. Please let me
    know what do you think about it and if is the correct way how to fix
    broken UTF-8 support in fs drivers. As explained in above email thread I
    think it does not make sense to try fixing whole NLS framework and it is
    easier to just drop this nls_utf8 module.

    Note: this patch series does not address UTF-8 fat case-sensitivity issue:
    https://lore.kernel.org/linux-fsdevel/20200119221455.bac7dc55g56q2l4r@pali/

    Changes since RFC v1:
    * Dropped already merged udf and isofs patches
    * Addressed review comments:
    - updated documentation
    - usage of seq_puts
    - some code moved to local variables
    - usage of true/false instead of 1/0
    - rebased on top of master branch

    Link to RFC v1:
    https://lore.kernel.org/linux-fsdevel/20210808162453.1653-1-pali@kernel.org/

    Pali Rohár (18):
    fat: Fix iocharset=utf8 mount option
    hfsplus: Add iocharset= mount option as alias for nls=
    ntfs: Undeprecate iocharset= mount option
    ntfs: Fix error processing when load_nls() fails
    befs: Fix printing iocharset= mount option
    befs: Rename enum value Opt_charset to Opt_iocharset to match mount
    option
    befs: Fix error processing when load_nls() fails
    befs: Allow to use native UTF-8 mode
    hfs: Explicitly set hsb->nls_disk when hsb->nls_io is set
    hfs: Do not use broken utf8 NLS table for iocharset=utf8 mount option
    hfsplus: Do not use broken utf8 NLS table for iocharset=utf8 mount
    option
    jfs: Remove custom iso8859-1 implementation
    jfs: Fix buffer overflow in jfs_strfromUCS_le() function
    jfs: Do not use broken utf8 NLS table for iocharset=utf8 mount option
    ntfs: Do not use broken utf8 NLS table for iocharset=utf8 mount option
    cifs: Do not use broken utf8 NLS table for iocharset=utf8 mount option
    cifs: Remove usage of load_nls_default() calls
    nls: Drop broken nls_utf8 module

    Documentation/filesystems/hfsplus.rst | 3 +
    Documentation/filesystems/ntfs.rst | 5 +-
    Documentation/filesystems/vfat.rst | 13 +--
    fs/befs/linuxvfs.c | 24 +++--
    fs/cifs/cifs_unicode.c | 128 +++++++++++++++++---------
    fs/cifs/cifs_unicode.h | 2 +-
    fs/cifs/cifsfs.c | 2 +
    fs/cifs/cifssmb.c | 8 +-
    fs/cifs/connect.c | 8 +-
    fs/cifs/dfs_cache.c | 24 ++---
    fs/cifs/dir.c | 28 ++++--
    fs/cifs/smb2pdu.c | 18 +---
    fs/cifs/winucase.c | 14 ++-
    fs/fat/Kconfig | 19 +---
    fs/fat/dir.c | 17 ++--
    fs/fat/fat.h | 22 +++++
    fs/fat/inode.c | 28 +++---
    fs/fat/namei_vfat.c | 26 ++++--
    fs/hfs/super.c | 62 +++++++++++--
    fs/hfs/trans.c | 62 +++++++------
    fs/hfsplus/dir.c | 7 +-
    fs/hfsplus/options.c | 39 +++++---
    fs/hfsplus/super.c | 7 +-
    fs/hfsplus/unicode.c | 31 ++++++-
    fs/hfsplus/xattr.c | 20 ++--
    fs/hfsplus/xattr_security.c | 6 +-
    fs/jfs/jfs_dtree.c | 13 ++-
    fs/jfs/jfs_unicode.c | 35 +++----
    fs/jfs/jfs_unicode.h | 2 +-
    fs/jfs/super.c | 29 ++++--
    fs/nls/Kconfig | 9 --
    fs/nls/Makefile | 1 -
    fs/nls/nls_utf8.c | 67 --------------
    fs/ntfs/dir.c | 6 +-
    fs/ntfs/inode.c | 5 +-
    fs/ntfs/super.c | 60 ++++++------
    fs/ntfs/unistr.c | 29 +++++-
    37 files changed, 493 insertions(+), 386 deletions(-)
    delete mode 100644 fs/nls/nls_utf8.c

    --
    2.20.1

    \
     
     \ /
      Last update: 2023-03-26 23:20    [W:7.190 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site