Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp3862419pxf; Mon, 29 Mar 2021 13:44:14 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxP4B7AP4BNW1vCaoD4di1fQXGoAVBMpPXDGc/EtbjSiTiM8yjWz8QkXIp/z6Ps5R4geCk1 X-Received: by 2002:a17:906:26c9:: with SMTP id u9mr30084185ejc.520.1617050653914; Mon, 29 Mar 2021 13:44:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1617050653; cv=none; d=google.com; s=arc-20160816; b=bkniL6m1psMwVM8jVMb/KNFnTbZMJhwXV6rUlRfrHr54batU8wdjYHWX+xyYOHmvCC 3KBTMscnhbXwMMAk1E/xxgarQ1LxCuctK5l6p3e+Bfi8EvopG2yDTbx8QpFlc3mEZmWB +c+gNY5JXNmiJsWZTxr50X1e/mCwfX5J2Tqqp4inGajRhptvIlu97MH1FKtv4CM0xFsM zpD9llMKUXK+SB8yZ00MBGU849lErw8pmqQ7ekKM86BTD91ZHLPgSXZlDpleZKIkaGiQ ZtLcTvNZzRYv2OVCromGy+syjbd5CtXRaWYzsWOJlrJ2mDJ/VUuWZ+HK3GUB24JLKoFN tqhA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=fTp1fCPR+ZJTYkPef1Vmnm4rO/D4nTSJdqmiGhOgZCE=; b=l2mrkdz/+lBAm1uO9z9yAk1Q8UiXrj5DbqD7LPpaHeRpnrYJSJyNqR5wpZuNhe+u08 nAKf811g4JcvZ7VCmVj5LOFRhcJIghBfsaTy+GQjoonRAL+lA/MyVvs5hOlLs+sq37Ph Ch2AxF6sJSdMDJms2dPBRtqDTiP3Icb+t2OSKb8fUF5h5B13q5XikWYzzMz1FPfNdmkA 7PVTb8Lda6OJ1w6pB/68Gexq6e9GI8hNQ1wHiQDMYd50wOU7jrWYv0nFL6+/L2LXjlEI 7QOWJGi0/qqoTQCOZUqJD0zJK3BVXJjv3oMYGt6weycAh7ydSmSJrZBU1PhsYcZVTn7N N02Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=collabora.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id hc31si13482813ejc.524.2021.03.29.13.43.49; Mon, 29 Mar 2021 13:44:13 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=collabora.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231318AbhC2UnO (ORCPT + 99 others); Mon, 29 Mar 2021 16:43:14 -0400 Received: from bhuna.collabora.co.uk ([46.235.227.227]:54432 "EHLO bhuna.collabora.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231300AbhC2UnA (ORCPT ); Mon, 29 Mar 2021 16:43:00 -0400 Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: shreeya) with ESMTPSA id 152C21F40EFE From: Shreeya Patel To: tytso@mit.edu, adilger.kernel@dilger.ca, jaegeuk@kernel.org, chao@kernel.org, krisman@collabora.com, ebiggers@google.com, drosen@google.com, ebiggers@kernel.org, yuchao0@huawei.com Cc: linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, linux-fsdevel@vger.kernel.org, kernel@collabora.com, andre.almeida@collabora.com Subject: [PATCH v5 0/4] Make UTF-8 encoding loadable Date: Tue, 30 Mar 2021 02:12:36 +0530 Message-Id: <20210329204240.359184-1-shreeya.patel@collabora.com> X-Mailer: git-send-email 2.30.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org utf8data.h_shipped has a large database table which is an auto-generated decodification trie for the unicode normalization functions and it is not necessary to carry this large table in the kernel. Goal is to make UTF-8 encoding loadable by converting it into a module and adding a layer between the filesystems and the utf8 module which will load the module whenever any filesystem that needs unicode is mounted. 1st patch in the series resolves the warning reported by kernel test robot by using strscpy instead of strncpy. Unicode is the subsystem and utf8 is a charachter encoding for the subsystem, hence 2nd and 3rd patches in the series are renaming functions and file name to unicode for better understanding the difference between UTF-8 module and unicode layer. Last patch in the series adds the layer and utf8 module and also uses static calls which gives performance benefit when compared to indirect calls using function pointers. --- Changes in v5 - Remove patch which adds NULL check in ext4/super.c and f2fs/super.c before calling unicode_unload(). - Rename global variables and default static call functions for better understanding - Make only config UNICODE_UTF8 visible and config UNICODE to be always enabled provided UNICODE_UTF8 is enabled. - Improve the documentation for Kconfig - Improve the commit message. Changes in v4 - Return error from the static calls instead of doing nothing and succeeding even without loading the module. - Remove the complete usage of utf8_ops and use static calls at all places. - Restore the static calls to default values when module is unloaded. - Decrement the reference of module after calling the unload function. - Remove spinlock as there will be no race conditions after removing utf8_ops. Changes in v3 - Add a patch which checks if utf8 is loaded before calling utf8_unload() in ext4 and f2fs filesystems - Return error if strscpy() returns value < 0 - Correct the conditions to prevent NULL pointer dereference while accessing functions via utf8_ops variable. - Add spinlock to avoid race conditions. - Use static_call() for preventing speculative execution attacks. Changes in v2 - Remove the duplicate file from the last patch. - Make the wrapper functions inline. - Remove msleep and use try_module_get() and module_put() for ensuring that module is loaded correctly and also doesn't get unloaded while in use. - Resolve the warning reported by kernel test robot. - Resolve all the checkpatch.pl warnings. Shreeya Patel (4): fs: unicode: Use strscpy() instead of strncpy() fs: unicode: Rename function names from utf8 to unicode fs: unicode: Rename utf8-core file to unicode-core fs: unicode: Add utf8 module and a unicode layer fs/ext4/hash.c | 2 +- fs/ext4/namei.c | 12 +- fs/ext4/super.c | 6 +- fs/f2fs/dir.c | 12 +- fs/f2fs/super.c | 6 +- fs/libfs.c | 6 +- fs/unicode/Kconfig | 17 ++- fs/unicode/Makefile | 5 +- fs/unicode/unicode-core.c | 80 +++++++++++++ fs/unicode/{utf8-core.c => unicode-utf8.c} | 90 +++++++++------ fs/unicode/utf8-selftest.c | 8 +- include/linux/unicode.h | 127 ++++++++++++++++++--- 12 files changed, 291 insertions(+), 80 deletions(-) create mode 100644 fs/unicode/unicode-core.c rename fs/unicode/{utf8-core.c => unicode-utf8.c} (59%) -- 2.30.1