2022-05-09 06:25:25

by Fabio M. De Francesco

[permalink] [raw]
Subject: [PATCH] fs/ufs: Replace kmap() with kmap_local_page()

The use of kmap() is being deprecated in favor of kmap_local_page(). With
kmap_local_page(), the mapping is per thread, CPU local and not globally
visible.

The usage of kmap_local_page() in fs/ufs is pre-thread, therefore replace
kmap() / kunmap() calls with kmap_local_page() / kunmap_local().

kunmap_local() requires the mapping address, so return that address from
ufs_get_page() to be used in ufs_put_page().

These changes are essentially ported from fs/ext2 and relie largely on
commit 782b76d7abdf ("fs/ext2: Replace kmap() with kmap_local_page()").

Suggested-by: Ira Weiny <[email protected]>
Signed-off-by: Fabio M. De Francesco <[email protected]>
---
fs/ufs/dir.c | 116 +++++++++++++++++++++++++++++++------------------
fs/ufs/namei.c | 38 ++++++++--------
fs/ufs/ufs.h | 12 +++--
3 files changed, 102 insertions(+), 64 deletions(-)

diff --git a/fs/ufs/dir.c b/fs/ufs/dir.c
index b721d0bda5e5..39e81547ebb9 100644
--- a/fs/ufs/dir.c
+++ b/fs/ufs/dir.c
@@ -61,9 +61,9 @@ static int ufs_commit_chunk(struct page *page, loff_t pos, unsigned len)
return err;
}

-static inline void ufs_put_page(struct page *page)
+inline void ufs_put_page(struct page *page, void *page_addr)
{
- kunmap(page);
+ kunmap_local(page_addr);
put_page(page);
}

@@ -72,11 +72,12 @@ ino_t ufs_inode_by_name(struct inode *dir, const struct qstr *qstr)
ino_t res = 0;
struct ufs_dir_entry *de;
struct page *page;
-
- de = ufs_find_entry(dir, qstr, &page);
+ void *page_addr;
+
+ de = ufs_find_entry(dir, qstr, &page, &page_addr);
if (de) {
res = fs32_to_cpu(dir->i_sb, de->d_ino);
- ufs_put_page(page);
+ ufs_put_page(page, page_addr);
}
return res;
}
@@ -84,11 +85,11 @@ ino_t ufs_inode_by_name(struct inode *dir, const struct qstr *qstr)

/* Releases the page */
void ufs_set_link(struct inode *dir, struct ufs_dir_entry *de,
- struct page *page, struct inode *inode,
- bool update_times)
+ struct page *page, void *page_addr,
+ struct inode *inode, bool update_times)
{
loff_t pos = page_offset(page) +
- (char *) de - (char *) page_address(page);
+ (char *)de - (char *)page_addr;
unsigned len = fs16_to_cpu(dir->i_sb, de->d_reclen);
int err;

@@ -100,18 +101,17 @@ void ufs_set_link(struct inode *dir, struct ufs_dir_entry *de,
ufs_set_de_type(dir->i_sb, de, inode->i_mode);

err = ufs_commit_chunk(page, pos, len);
- ufs_put_page(page);
+ ufs_put_page(page, page_addr);
if (update_times)
dir->i_mtime = dir->i_ctime = current_time(dir);
mark_inode_dirty(dir);
}


-static bool ufs_check_page(struct page *page)
+static bool ufs_check_page(struct page *page, char *kaddr)
{
struct inode *dir = page->mapping->host;
struct super_block *sb = dir->i_sb;
- char *kaddr = page_address(page);
unsigned offs, rec_len;
unsigned limit = PAGE_SIZE;
const unsigned chunk_mask = UFS_SB(sb)->s_uspi->s_dirblksize - 1;
@@ -186,21 +186,28 @@ static bool ufs_check_page(struct page *page)
return false;
}

-static struct page *ufs_get_page(struct inode *dir, unsigned long n)
+/*
+ * Calls to ufs_get_page()/ufs_put_page() must be nested according to the
+ * rules documented in kmap_local_page()/kunmap_local().
+ *
+ * NOTE: ufs_find_entry() and ufs_dotdot() act as calls to ufs_get_page()
+ * and must be treated accordingly for nesting purposes.
+ */
+static struct page *ufs_get_page(struct inode *dir, unsigned long n, void **page_addr)
{
struct address_space *mapping = dir->i_mapping;
struct page *page = read_mapping_page(mapping, n, NULL);
if (!IS_ERR(page)) {
- kmap(page);
+ *page_addr = kmap_local_page(page);
if (unlikely(!PageChecked(page))) {
- if (PageError(page) || !ufs_check_page(page))
+ if (PageError(page) || !ufs_check_page(page, *page_addr))
goto fail;
}
}
return page;

fail:
- ufs_put_page(page);
+ ufs_put_page(page, *page_addr);
return ERR_PTR(-EIO);
}

@@ -226,15 +233,29 @@ ufs_next_entry(struct super_block *sb, struct ufs_dir_entry *p)
fs16_to_cpu(sb, p->d_reclen));
}

-struct ufs_dir_entry *ufs_dotdot(struct inode *dir, struct page **p)
+/*
+ * Return the '..' directory entry and the page in which the entry was found
+ * (as a parameter - p).
+ *
+ * On Success ufs_put_page() should be called on *p.
+ *
+ * NOTE: Calls to ufs_get_page()/ufs_put_page() must be nested according to
+ * the rules documented in kmap_local_page()/kunmap_local().
+ *
+ * ufs_find_entry() and ufs_dotdot() act as calls to ufs_get_page() and
+ * must be treated accordingly for nesting purposes.
+ */
+struct ufs_dir_entry *ufs_dotdot(struct inode *dir, struct page **p, void **pa)
{
- struct page *page = ufs_get_page(dir, 0);
+ void *page_addr;
+ struct page *page = ufs_get_page(dir, 0, &page_addr);
struct ufs_dir_entry *de = NULL;

if (!IS_ERR(page)) {
de = ufs_next_entry(dir->i_sb,
- (struct ufs_dir_entry *)page_address(page));
+ (struct ufs_dir_entry *)page_addr);
*p = page;
+ *pa = page_addr;
}
return de;
}
@@ -246,9 +267,17 @@ struct ufs_dir_entry *ufs_dotdot(struct inode *dir, struct page **p)
* returns the page in which the entry was found, and the entry itself
* (as a parameter - res_dir). Page is returned mapped and unlocked.
* Entry is guaranteed to be valid.
+ *
+ * On Success ufs_put_page() should be called on *res_page.
+ *
+ * NOTE: Calls to ufs_get_page()/ufs_put_page() must be nested according to
+ * the rules documented in kmap_local_page()/kunmap_local().
+ *
+ * ufs_find_entry() and ufs_dotdot() act as calls to ufs_get_page() and
+ * must be treated accordingly for nesting purposes.
*/
struct ufs_dir_entry *ufs_find_entry(struct inode *dir, const struct qstr *qstr,
- struct page **res_page)
+ struct page **res_page, void **res_page_addr)
{
struct super_block *sb = dir->i_sb;
const unsigned char *name = qstr->name;
@@ -259,6 +288,7 @@ struct ufs_dir_entry *ufs_find_entry(struct inode *dir, const struct qstr *qstr,
struct page *page = NULL;
struct ufs_inode_info *ui = UFS_I(dir);
struct ufs_dir_entry *de;
+ void *page_addr;

UFSD("ENTER, dir_ino %lu, name %s, namlen %u\n", dir->i_ino, name, namelen);

@@ -267,6 +297,7 @@ struct ufs_dir_entry *ufs_find_entry(struct inode *dir, const struct qstr *qstr,

/* OFFSET_CACHE */
*res_page = NULL;
+ *res_page_addr = NULL;

start = ui->i_dir_start_lookup;

@@ -275,9 +306,10 @@ struct ufs_dir_entry *ufs_find_entry(struct inode *dir, const struct qstr *qstr,
n = start;
do {
char *kaddr;
- page = ufs_get_page(dir, n);
+
+ page = ufs_get_page(dir, n, &page_addr);
if (!IS_ERR(page)) {
- kaddr = page_address(page);
+ kaddr = page_addr;
de = (struct ufs_dir_entry *) kaddr;
kaddr += ufs_last_byte(dir, n) - reclen;
while ((char *) de <= kaddr) {
@@ -285,7 +317,7 @@ struct ufs_dir_entry *ufs_find_entry(struct inode *dir, const struct qstr *qstr,
goto found;
de = ufs_next_entry(sb, de);
}
- ufs_put_page(page);
+ ufs_put_page(page, page_addr);
}
if (++n >= npages)
n = 0;
@@ -295,6 +327,7 @@ struct ufs_dir_entry *ufs_find_entry(struct inode *dir, const struct qstr *qstr,

found:
*res_page = page;
+ *res_page_addr = page_addr;
ui->i_dir_start_lookup = n;
return de;
}
@@ -312,6 +345,7 @@ int ufs_add_link(struct dentry *dentry, struct inode *inode)
const unsigned int chunk_size = UFS_SB(sb)->s_uspi->s_dirblksize;
unsigned short rec_len, name_len;
struct page *page = NULL;
+ void *page_addr = NULL;
struct ufs_dir_entry *de;
unsigned long npages = dir_pages(dir);
unsigned long n;
@@ -329,12 +363,12 @@ int ufs_add_link(struct dentry *dentry, struct inode *inode)
for (n = 0; n <= npages; n++) {
char *dir_end;

- page = ufs_get_page(dir, n);
+ page = ufs_get_page(dir, n, &page_addr);
err = PTR_ERR(page);
if (IS_ERR(page))
goto out;
lock_page(page);
- kaddr = page_address(page);
+ kaddr = page_addr;
dir_end = kaddr + ufs_last_byte(dir, n);
de = (struct ufs_dir_entry *)kaddr;
kaddr += PAGE_SIZE - reclen;
@@ -365,14 +399,14 @@ int ufs_add_link(struct dentry *dentry, struct inode *inode)
de = (struct ufs_dir_entry *) ((char *) de + rec_len);
}
unlock_page(page);
- ufs_put_page(page);
+ ufs_put_page(page, page_addr);
}
BUG();
return -EINVAL;

got_it:
pos = page_offset(page) +
- (char*)de - (char*)page_address(page);
+ (char *)de - (char *)page_addr;
err = ufs_prepare_chunk(page, pos, rec_len);
if (err)
goto out_unlock;
@@ -396,7 +430,7 @@ int ufs_add_link(struct dentry *dentry, struct inode *inode)
mark_inode_dirty(dir);
/* OFFSET_CACHE */
out_put:
- ufs_put_page(page);
+ ufs_put_page(page, page_addr);
out:
return err;
out_unlock:
@@ -441,7 +475,7 @@ ufs_readdir(struct file *file, struct dir_context *ctx)
char *kaddr, *limit;
struct ufs_dir_entry *de;

- struct page *page = ufs_get_page(inode, n);
+ struct page *page = ufs_get_page(inode, n, (void **)&kaddr);

if (IS_ERR(page)) {
ufs_error(sb, __func__,
@@ -450,7 +484,6 @@ ufs_readdir(struct file *file, struct dir_context *ctx)
ctx->pos += PAGE_SIZE - offset;
return -EIO;
}
- kaddr = page_address(page);
if (unlikely(need_revalidate)) {
if (offset) {
offset = ufs_validate_entry(sb, kaddr, offset, chunk_mask);
@@ -476,13 +509,13 @@ ufs_readdir(struct file *file, struct dir_context *ctx)
ufs_get_de_namlen(sb, de),
fs32_to_cpu(sb, de->d_ino),
d_type)) {
- ufs_put_page(page);
+ ufs_put_page(page, kaddr);
return 0;
}
}
ctx->pos += fs16_to_cpu(sb, de->d_reclen);
}
- ufs_put_page(page);
+ ufs_put_page(page, kaddr);
}
return 0;
}
@@ -493,10 +526,9 @@ ufs_readdir(struct file *file, struct dir_context *ctx)
* previous entry.
*/
int ufs_delete_entry(struct inode *inode, struct ufs_dir_entry *dir,
- struct page * page)
+ struct page *page, char *kaddr)
{
struct super_block *sb = inode->i_sb;
- char *kaddr = page_address(page);
unsigned from = ((char*)dir - kaddr) & ~(UFS_SB(sb)->s_uspi->s_dirblksize - 1);
unsigned to = ((char*)dir - kaddr) + fs16_to_cpu(sb, dir->d_reclen);
loff_t pos;
@@ -522,7 +554,7 @@ int ufs_delete_entry(struct inode *inode, struct ufs_dir_entry *dir,
de = ufs_next_entry(sb, de);
}
if (pde)
- from = (char*)pde - (char*)page_address(page);
+ from = (char *)pde - kaddr;

pos = page_offset(page) + from;
lock_page(page);
@@ -535,7 +567,7 @@ int ufs_delete_entry(struct inode *inode, struct ufs_dir_entry *dir,
inode->i_ctime = inode->i_mtime = current_time(inode);
mark_inode_dirty(inode);
out:
- ufs_put_page(page);
+ ufs_put_page(page, kaddr);
UFSD("EXIT\n");
return err;
}
@@ -559,8 +591,7 @@ int ufs_make_empty(struct inode * inode, struct inode *dir)
goto fail;
}

- kmap(page);
- base = (char*)page_address(page);
+ base = kmap_local_page(page);
memset(base, 0, PAGE_SIZE);

de = (struct ufs_dir_entry *) base;
@@ -577,7 +608,7 @@ int ufs_make_empty(struct inode * inode, struct inode *dir)
de->d_reclen = cpu_to_fs16(sb, chunk_size - UFS_DIR_REC_LEN(1));
ufs_set_de_namlen(sb, de, 2);
strcpy (de->d_name, "..");
- kunmap(page);
+ kunmap_local(base);

err = ufs_commit_chunk(page, 0, chunk_size);
fail:
@@ -592,17 +623,18 @@ int ufs_empty_dir(struct inode * inode)
{
struct super_block *sb = inode->i_sb;
struct page *page = NULL;
+ void *page_addr;
unsigned long i, npages = dir_pages(inode);

for (i = 0; i < npages; i++) {
char *kaddr;
struct ufs_dir_entry *de;
- page = ufs_get_page(inode, i);

+ page = ufs_get_page(inode, i, &page_addr);
if (IS_ERR(page))
continue;

- kaddr = page_address(page);
+ kaddr = page_addr;
de = (struct ufs_dir_entry *)kaddr;
kaddr += ufs_last_byte(inode, i) - UFS_DIR_REC_LEN(1);

@@ -629,12 +661,12 @@ int ufs_empty_dir(struct inode * inode)
}
de = ufs_next_entry(sb, de);
}
- ufs_put_page(page);
+ ufs_put_page(page, page_addr);
}
return 1;

not_empty:
- ufs_put_page(page);
+ ufs_put_page(page, page_addr);
return 0;
}

diff --git a/fs/ufs/namei.c b/fs/ufs/namei.c
index 29d5a0e0c8f0..bc7060d10dd2 100644
--- a/fs/ufs/namei.c
+++ b/fs/ufs/namei.c
@@ -210,13 +210,14 @@ static int ufs_unlink(struct inode *dir, struct dentry *dentry)
struct inode * inode = d_inode(dentry);
struct ufs_dir_entry *de;
struct page *page;
+ void *page_addr;
int err = -ENOENT;

- de = ufs_find_entry(dir, &dentry->d_name, &page);
+ de = ufs_find_entry(dir, &dentry->d_name, &page, &page_addr);
if (!de)
goto out;

- err = ufs_delete_entry(dir, de, page);
+ err = ufs_delete_entry(dir, de, page, page_addr);
if (err)
goto out;

@@ -250,27 +251,31 @@ static int ufs_rename(struct user_namespace *mnt_userns, struct inode *old_dir,
struct inode *old_inode = d_inode(old_dentry);
struct inode *new_inode = d_inode(new_dentry);
struct page *dir_page = NULL;
+ void *dir_page_addr;
struct ufs_dir_entry * dir_de = NULL;
struct page *old_page;
+ void *old_page_addr;
struct ufs_dir_entry *old_de;
int err = -ENOENT;

if (flags & ~RENAME_NOREPLACE)
return -EINVAL;

- old_de = ufs_find_entry(old_dir, &old_dentry->d_name, &old_page);
+ old_de = ufs_find_entry(old_dir, &old_dentry->d_name, &old_page,
+ &old_page_addr);
if (!old_de)
goto out;

if (S_ISDIR(old_inode->i_mode)) {
err = -EIO;
- dir_de = ufs_dotdot(old_inode, &dir_page);
+ dir_de = ufs_dotdot(old_inode, &dir_page, &dir_page_addr);
if (!dir_de)
goto out_old;
}

if (new_inode) {
struct page *new_page;
+ void *page_addr;
struct ufs_dir_entry *new_de;

err = -ENOTEMPTY;
@@ -278,10 +283,11 @@ static int ufs_rename(struct user_namespace *mnt_userns, struct inode *old_dir,
goto out_dir;

err = -ENOENT;
- new_de = ufs_find_entry(new_dir, &new_dentry->d_name, &new_page);
+ new_de = ufs_find_entry(new_dir, &new_dentry->d_name, &new_page,
+ &page_addr);
if (!new_de)
goto out_dir;
- ufs_set_link(new_dir, new_de, new_page, old_inode, 1);
+ ufs_set_link(new_dir, new_de, new_page, page_addr, old_inode, 1);
new_inode->i_ctime = current_time(new_inode);
if (dir_de)
drop_nlink(new_inode);
@@ -300,29 +306,25 @@ static int ufs_rename(struct user_namespace *mnt_userns, struct inode *old_dir,
*/
old_inode->i_ctime = current_time(old_inode);

- ufs_delete_entry(old_dir, old_de, old_page);
+ ufs_delete_entry(old_dir, old_de, old_page, old_page_addr);
mark_inode_dirty(old_inode);

if (dir_de) {
if (old_dir != new_dir)
- ufs_set_link(old_inode, dir_de, dir_page, new_dir, 0);
- else {
- kunmap(dir_page);
- put_page(dir_page);
- }
+ ufs_set_link(old_inode, dir_de, dir_page,
+ dir_page_addr, new_dir, 0);
+ else
+ ufs_put_page(dir_page, dir_page_addr);
inode_dec_link_count(old_dir);
}
return 0;


out_dir:
- if (dir_de) {
- kunmap(dir_page);
- put_page(dir_page);
- }
+ if (dir_de)
+ ufs_put_page(dir_page, dir_page_addr);
out_old:
- kunmap(old_page);
- put_page(old_page);
+ ufs_put_page(old_page, old_page_addr);
out:
return err;
}
diff --git a/fs/ufs/ufs.h b/fs/ufs/ufs.h
index 550f7c5a3636..be02e5d1886b 100644
--- a/fs/ufs/ufs.h
+++ b/fs/ufs/ufs.h
@@ -102,12 +102,16 @@ extern const struct inode_operations ufs_dir_inode_operations;
extern int ufs_add_link (struct dentry *, struct inode *);
extern ino_t ufs_inode_by_name(struct inode *, const struct qstr *);
extern int ufs_make_empty(struct inode *, struct inode *);
-extern struct ufs_dir_entry *ufs_find_entry(struct inode *, const struct qstr *, struct page **);
-extern int ufs_delete_entry(struct inode *, struct ufs_dir_entry *, struct page *);
+extern struct ufs_dir_entry *ufs_find_entry(struct inode *, const struct qstr *,
+ struct page **, void **);
+extern int ufs_delete_entry(struct inode *, struct ufs_dir_entry *, struct page *,
+ char *);
extern int ufs_empty_dir (struct inode *);
-extern struct ufs_dir_entry *ufs_dotdot(struct inode *, struct page **);
+extern struct ufs_dir_entry *ufs_dotdot(struct inode *, struct page **, void **);
extern void ufs_set_link(struct inode *dir, struct ufs_dir_entry *de,
- struct page *page, struct inode *inode, bool update_times);
+ struct page *page, void *page_addr,
+ struct inode *inode, bool update_times);
+extern inline void ufs_put_page(struct page *page, void *page_addr);

/* file.c */
extern const struct inode_operations ufs_file_inode_operations;
--
2.34.1



2022-05-09 10:00:12

by kernel test robot

[permalink] [raw]
Subject: Re: [PATCH] fs/ufs: Replace kmap() with kmap_local_page()

Hi "Fabio,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on linus/master]
[also build test WARNING on v5.18-rc6]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url: https://github.com/intel-lab-lkp/linux/commits/Fabio-M-De-Francesco/fs-ufs-Replace-kmap-with-kmap_local_page/20220509-040920
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git e3de3a1cda5fdc3ac42cb0d45321fb254500595f
config: riscv-randconfig-r042-20220509 (https://download.01.org/0day-ci/archive/20220509/[email protected]/config)
compiler: riscv32-linux-gcc (GCC) 11.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/intel-lab-lkp/linux/commit/e73d9919e2725b216318d5d02b8a184876ab3b11
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Fabio-M-De-Francesco/fs-ufs-Replace-kmap-with-kmap_local_page/20220509-040920
git checkout e73d9919e2725b216318d5d02b8a184876ab3b11
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross W=1 O=build_dir ARCH=riscv SHELL=/bin/bash

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>

All warnings (new ones prefixed by >>, old ones prefixed by <<):

>> WARNING: modpost: vmlinux.o(.text+0xa76c20): Section mismatch in reference from the function rtc_update_irq() to the variable .init.text:.LVL13
The function rtc_update_irq() references
the variable __init .LVL13.
This is often because rtc_update_irq lacks a __init
annotation or the annotation of .LVL13 is wrong.
--
>> WARNING: modpost: vmlinux.o(.text+0xb35ab4): Section mismatch in reference from the function btintel_send_intel_reset() to the variable .init.text:.LBE19058
The function btintel_send_intel_reset() references
the variable __init .LBE19058.
This is often because btintel_send_intel_reset lacks a __init
annotation or the annotation of .LBE19058 is wrong.
--
>> WARNING: modpost: vmlinux.o(.text+0xc53984): Section mismatch in reference from the function neigh_table_clear() to the variable .init.text:$x
The function neigh_table_clear() references
the variable __init $x.
This is often because neigh_table_clear lacks a __init
annotation or the annotation of $x is wrong.
--
>> WARNING: modpost: vmlinux.o(__ex_table+0x141c): Section mismatch in reference from the variable .L0 to the variable .debug_str:.LASF936
FATAL: modpost: extable_entry size hasn't been discovered!

Note: the below error/warnings can be found in parent commit:
<< WARNING: modpost: vmlinux.o(.text+0xa76d10): Section mismatch in reference from the function rtc_update_irq() to the variable .init.text:.L0
<< WARNING: modpost: vmlinux.o(.exit.text+0x9b48): Section mismatch in reference from the function rproc_exit_sysfs() to the variable .init.text:.L0
<< WARNING: modpost: vmlinux.o(__ex_table+0x141c): Section mismatch in reference from the variable .L0 to the variable .debug_str:.LASF1567
<< WARNING: modpost: vmlinux.o(.text+0xa7839c): Section mismatch in reference from the function rtc_get_dev_attribute_groups() to the variable .init.text:.L0
<< WARNING: modpost: vmlinux.o(.text+0xae2676): Section mismatch in reference from the function ir_raw_get_allowed_protocols() to the variable .init.text:.L0
<< WARNING: modpost: vmlinux.o(.text+0xae2cb8): Section mismatch in reference from the function ir_raw_event_prepare() to the variable .init.text:.L0
<< WARNING: modpost: vmlinux.o(.text+0xae2e16): Section mismatch in reference from the function ir_raw_event_free() to the variable .init.text:.L0
<< WARNING: modpost: vmlinux.o(.text+0xae2e3a): Section mismatch in reference from the function ir_raw_event_unregister() to the variable .init.text:.L0
<< WARNING: modpost: vmlinux.o(.text+0xb35172): Section mismatch in reference from the function btintel_enter_mfg() to the variable .init.text:.LBB19521
<< WARNING: modpost: vmlinux.o(.text+0xa76d10): Section mismatch in reference from the function rtc_update_irq() to the variable .init.text:.L0
<< WARNING: modpost: vmlinux.o(.exit.text+0x9b48): Section mismatch in reference from the function rproc_exit_sysfs() to the variable .init.text:.L0
<< WARNING: modpost: vmlinux.o(__ex_table+0x141c): Section mismatch in reference from the variable .L0 to the variable .debug_str:.LASF1567
<< WARNING: modpost: vmlinux.o(.text+0xa7839c): Section mismatch in reference from the function rtc_get_dev_attribute_groups() to the variable .init.text:.L0
<< WARNING: modpost: vmlinux.o(.text+0xae2676): Section mismatch in reference from the function ir_raw_get_allowed_protocols() to the variable .init.text:.L0
<< WARNING: modpost: vmlinux.o(.text+0xae2cb8): Section mismatch in reference from the function ir_raw_event_prepare() to the variable .init.text:.L0
<< WARNING: modpost: vmlinux.o(.text+0xae2e16): Section mismatch in reference from the function ir_raw_event_free() to the variable .init.text:.L0
<< WARNING: modpost: vmlinux.o(.text+0xae2e3a): Section mismatch in reference from the function ir_raw_event_unregister() to the variable .init.text:.L0
<< WARNING: modpost: vmlinux.o(.text+0xb35172): Section mismatch in reference from the function btintel_enter_mfg() to the variable .init.text:.LBB19521
<< WARNING: modpost: vmlinux.o(.text+0xa76d10): Section mismatch in reference from the function rtc_update_irq() to the variable .init.text:.L0
<< WARNING: modpost: vmlinux.o(.exit.text+0x9b48): Section mismatch in reference from the function rproc_exit_sysfs() to the variable .init.text:.L0
<< WARNING: modpost: vmlinux.o(__ex_table+0x141c): Section mismatch in reference from the variable .L0 to the variable .debug_str:.LASF1567
<< WARNING: modpost: vmlinux.o(.text+0xa7839c): Section mismatch in reference from the function rtc_get_dev_attribute_groups() to the variable .init.text:.L0
<< WARNING: modpost: vmlinux.o(.text+0xae2676): Section mismatch in reference from the function ir_raw_get_allowed_protocols() to the variable .init.text:.L0
<< WARNING: modpost: vmlinux.o(.text+0xae2cb8): Section mismatch in reference from the function ir_raw_event_prepare() to the variable .init.text:.L0
<< WARNING: modpost: vmlinux.o(.text+0xae2e16): Section mismatch in reference from the function ir_raw_event_free() to the variable .init.text:.L0
<< WARNING: modpost: vmlinux.o(.text+0xae2e3a): Section mismatch in reference from the function ir_raw_event_unregister() to the variable .init.text:.L0
<< WARNING: modpost: vmlinux.o(.text+0xb35172): Section mismatch in reference from the function btintel_enter_mfg() to the variable .init.text:.LBB19521
<< WARNING: modpost: vmlinux.o(.text+0xa76d10): Section mismatch in reference from the function rtc_update_irq() to the variable .init.text:.L0
<< WARNING: modpost: vmlinux.o(.exit.text+0x9b48): Section mismatch in reference from the function rproc_exit_sysfs() to the variable .init.text:.L0
<< WARNING: modpost: vmlinux.o(__ex_table+0x141c): Section mismatch in reference from the variable .L0 to the variable .debug_str:.LASF1567
<< WARNING: modpost: vmlinux.o(.text+0xa7839c): Section mismatch in reference from the function rtc_get_dev_attribute_groups() to the variable .init.text:.L0
<< WARNING: modpost: vmlinux.o(.text+0xae2676): Section mismatch in reference from the function ir_raw_get_allowed_protocols() to the variable .init.text:.L0
<< WARNING: modpost: vmlinux.o(.text+0xae2cb8): Section mismatch in reference from the function ir_raw_event_prepare() to the variable .init.text:.L0
<< WARNING: modpost: vmlinux.o(.text+0xae2e16): Section mismatch in reference from the function ir_raw_event_free() to the variable .init.text:.L0
<< WARNING: modpost: vmlinux.o(.text+0xae2e3a): Section mismatch in reference from the function ir_raw_event_unregister() to the variable .init.text:.L0
<< WARNING: modpost: vmlinux.o(.text+0xb35172): Section mismatch in reference from the function btintel_enter_mfg() to the variable .init.text:.LBB19521

--
0-DAY CI Kernel Test Service
https://01.org/lkp

2022-05-09 10:13:08

by Fabio M. De Francesco

[permalink] [raw]
Subject: Re: [PATCH] fs/ufs: Replace kmap() with kmap_local_page()

On lunedì 9 maggio 2022 01:44:13 CEST kernel test robot wrote:
> Hi "Fabio,
>
> Thank you for the patch! Perhaps something to improve:
>
> [auto build test WARNING on linus/master]
> [also build test WARNING on v5.18-rc6 next-20220506]
> [If your patch is applied to the wrong git tree, kindly drop us a note.
> And when submitting patch, we suggest to use '--base' as documented in
> https://git-scm.com/docs/git-format-patch]
>
> url: https://github.com/intel-lab-lkp/linux/commits/Fabio-M-De-Francesco/fs-ufs-Replace-kmap-with-kmap_local_page/20220509-040920
> base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/
linux.git e3de3a1cda5fdc3ac42cb0d45321fb254500595f
> config: arm-randconfig-s032-20220508 (https://download.01.org/0day-ci/
archive/20220509/[email protected]/config)
> compiler: arm-linux-gnueabi-gcc (GCC) 11.3.0
> reproduce:
> wget https://raw.githubusercontent.com/intel/lkp-tests/master/
sbin/make.cross -O ~/bin/make.cross
> chmod +x ~/bin/make.cross
> # apt-get install sparse
> # sparse version: v0.6.4-dirty
> # https://github.com/intel-lab-lkp/linux/commit/
e73d9919e2725b216318d5d02b8a184876ab3b11
> git remote add linux-review https://github.com/intel-lab-lkp/
linux
> git fetch --no-tags linux-review Fabio-M-De-Francesco/fs-ufs-
Replace-kmap-with-kmap_local_page/20220509-040920
> git checkout e73d9919e2725b216318d5d02b8a184876ab3b11
> # save the config file
> mkdir build_dir && cp config build_dir/.config
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross
C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=arm
SHELL=/bin/bash fs/
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <[email protected]>
>
>
> sparse warnings: (new ones prefixed by >>)
> fs/ufs/namei.c: note: in included file:
> >> fs/ufs/ufs.h:114:32: sparse: sparse: marked inline, but without a
definition
> >> fs/ufs/ufs.h:114:32: sparse: sparse: marked inline, but without a
definition
> >> fs/ufs/ufs.h:114:32: sparse: sparse: marked inline, but without a
definition
>
> vim +114 fs/ufs/ufs.h
>
> 99
> 100 /* dir.c */
> 101 extern const struct inode_operations ufs_dir_inode_operations;
> 102 extern int ufs_add_link (struct dentry *, struct inode *);
> 103 extern ino_t ufs_inode_by_name(struct inode *, const struct qstr
*);
> 104 extern int ufs_make_empty(struct inode *, struct inode *);
> 105 extern struct ufs_dir_entry *ufs_find_entry(struct inode *, const
struct qstr *,
> 106 struct page
**, void **);
> 107 extern int ufs_delete_entry(struct inode *, struct ufs_dir_entry
*, struct page *,
> 108 char *);
> 109 extern int ufs_empty_dir (struct inode *);
> 110 extern struct ufs_dir_entry *ufs_dotdot(struct inode *, struct
page **, void **);
> 111 extern void ufs_set_link(struct inode *dir, struct ufs_dir_entry
*de,
> 112 struct page *page, void
*page_addr,
> 113 struct inode *inode, bool
update_times);
> > 114 extern inline void ufs_put_page(struct page *page, void
*page_addr);
> 115
>
> --
> 0-DAY CI Kernel Test Service
> https://01.org/lkp

This will be fixed in v2.

Thanks,

Fabio




2022-05-09 10:13:19

by Fabio M. De Francesco

[permalink] [raw]
Subject: Re: [PATCH] fs/ufs: Replace kmap() with kmap_local_page()

On lunedì 9 maggio 2022 02:25:00 CEST kernel test robot wrote:
> Hi "Fabio,
>
> Thank you for the patch! Perhaps something to improve:
>
> [auto build test WARNING on linus/master]
> [also build test WARNING on v5.18-rc6]
> [If your patch is applied to the wrong git tree, kindly drop us a note.
> And when submitting patch, we suggest to use '--base' as documented in
> https://git-scm.com/docs/git-format-patch]
>
> url: https://github.com/intel-lab-lkp/linux/commits/Fabio-M-De-Francesco/fs-ufs-Replace-kmap-with-kmap_local_page/20220509-040920
> base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/
linux.git e3de3a1cda5fdc3ac42cb0d45321fb254500595f
> config: riscv-randconfig-r042-20220509 (https://download.01.org/0day-ci/
archive/20220509/[email protected]/config)
> compiler: riscv32-linux-gcc (GCC) 11.3.0
> reproduce (this is a W=1 build):
> wget https://raw.githubusercontent.com/intel/lkp-tests/master/
sbin/make.cross -O ~/bin/make.cross
> chmod +x ~/bin/make.cross
> # https://github.com/intel-lab-lkp/linux/commit/
e73d9919e2725b216318d5d02b8a184876ab3b11
> git remote add linux-review https://github.com/intel-lab-lkp/
linux
> git fetch --no-tags linux-review Fabio-M-De-Francesco/fs-ufs-
Replace-kmap-with-kmap_local_page/20220509-040920
> git checkout e73d9919e2725b216318d5d02b8a184876ab3b11
> # save the config file
> mkdir build_dir && cp config build_dir/.config
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross
W=1 O=build_dir ARCH=riscv SHELL=/bin/bash
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <[email protected]>
>
> All warnings (new ones prefixed by >>, old ones prefixed by <<):
>
> >> WARNING: modpost: vmlinux.o(.text+0xa76c20): Section mismatch in
reference from the function rtc_update_irq() to the variable
.init.text:.LVL13
> The function rtc_update_irq() references
> the variable __init .LVL13.
> This is often because rtc_update_irq lacks a __init
> annotation or the annotation of .LVL13 is wrong.
> --
> >> WARNING: modpost: vmlinux.o(.text+0xb35ab4): Section mismatch in
reference from the function btintel_send_intel_reset() to the variable
.init.text:.LBE19058
> The function btintel_send_intel_reset() references
> the variable __init .LBE19058.
> This is often because btintel_send_intel_reset lacks a __init
> annotation or the annotation of .LBE19058 is wrong.
> --
> >> WARNING: modpost: vmlinux.o(.text+0xc53984): Section mismatch in
reference from the function neigh_table_clear() to the variable .init.text:
$x
> The function neigh_table_clear() references
> the variable __init $x.
> This is often because neigh_table_clear lacks a __init
> annotation or the annotation of $x is wrong.
> --
> >> WARNING: modpost: vmlinux.o(__ex_table+0x141c): Section mismatch in
reference from the variable .L0 to the variable .debug_str:.LASF936
> FATAL: modpost: extable_entry size hasn't been discovered!
>
> Note: the below error/warnings can be found in parent commit:
> << WARNING: modpost: vmlinux.o(.text+0xa76d10): Section mismatch in
reference from the function rtc_update_irq() to the variable .init.text:.L0
> << WARNING: modpost: vmlinux.o(.exit.text+0x9b48): Section mismatch in
reference from the function rproc_exit_sysfs() to the variable
.init.text:.L0
> << WARNING: modpost: vmlinux.o(__ex_table+0x141c): Section mismatch in
reference from the variable .L0 to the variable .debug_str:.LASF1567
> << WARNING: modpost: vmlinux.o(.text+0xa7839c): Section mismatch in
reference from the function rtc_get_dev_attribute_groups() to the variable
.init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xae2676): Section mismatch in
reference from the function ir_raw_get_allowed_protocols() to the variable
.init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xae2cb8): Section mismatch in
reference from the function ir_raw_event_prepare() to the variable
.init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xae2e16): Section mismatch in
reference from the function ir_raw_event_free() to the variable
.init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xae2e3a): Section mismatch in
reference from the function ir_raw_event_unregister() to the variable
.init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xb35172): Section mismatch in
reference from the function btintel_enter_mfg() to the variable
.init.text:.LBB19521
> << WARNING: modpost: vmlinux.o(.text+0xa76d10): Section mismatch in
reference from the function rtc_update_irq() to the variable .init.text:.L0
> << WARNING: modpost: vmlinux.o(.exit.text+0x9b48): Section mismatch in
reference from the function rproc_exit_sysfs() to the variable
.init.text:.L0
> << WARNING: modpost: vmlinux.o(__ex_table+0x141c): Section mismatch in
reference from the variable .L0 to the variable .debug_str:.LASF1567
> << WARNING: modpost: vmlinux.o(.text+0xa7839c): Section mismatch in
reference from the function rtc_get_dev_attribute_groups() to the variable
.init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xae2676): Section mismatch in
reference from the function ir_raw_get_allowed_protocols() to the variable
.init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xae2cb8): Section mismatch in
reference from the function ir_raw_event_prepare() to the variable
.init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xae2e16): Section mismatch in
reference from the function ir_raw_event_free() to the variable
.init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xae2e3a): Section mismatch in
reference from the function ir_raw_event_unregister() to the variable
.init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xb35172): Section mismatch in
reference from the function btintel_enter_mfg() to the variable
.init.text:.LBB19521
> << WARNING: modpost: vmlinux.o(.text+0xa76d10): Section mismatch in
reference from the function rtc_update_irq() to the variable .init.text:.L0
> << WARNING: modpost: vmlinux.o(.exit.text+0x9b48): Section mismatch in
reference from the function rproc_exit_sysfs() to the variable
.init.text:.L0
> << WARNING: modpost: vmlinux.o(__ex_table+0x141c): Section mismatch in
reference from the variable .L0 to the variable .debug_str:.LASF1567
> << WARNING: modpost: vmlinux.o(.text+0xa7839c): Section mismatch in
reference from the function rtc_get_dev_attribute_groups() to the variable
.init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xae2676): Section mismatch in
reference from the function ir_raw_get_allowed_protocols() to the variable
.init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xae2cb8): Section mismatch in
reference from the function ir_raw_event_prepare() to the variable
.init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xae2e16): Section mismatch in
reference from the function ir_raw_event_free() to the variable
.init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xae2e3a): Section mismatch in
reference from the function ir_raw_event_unregister() to the variable
.init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xb35172): Section mismatch in
reference from the function btintel_enter_mfg() to the variable
.init.text:.LBB19521
> << WARNING: modpost: vmlinux.o(.text+0xa76d10): Section mismatch in
reference from the function rtc_update_irq() to the variable .init.text:.L0
> << WARNING: modpost: vmlinux.o(.exit.text+0x9b48): Section mismatch in
reference from the function rproc_exit_sysfs() to the variable
.init.text:.L0
> << WARNING: modpost: vmlinux.o(__ex_table+0x141c): Section mismatch in
reference from the variable .L0 to the variable .debug_str:.LASF1567
> << WARNING: modpost: vmlinux.o(.text+0xa7839c): Section mismatch in
reference from the function rtc_get_dev_attribute_groups() to the variable
.init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xae2676): Section mismatch in
reference from the function ir_raw_get_allowed_protocols() to the variable
.init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xae2cb8): Section mismatch in
reference from the function ir_raw_event_prepare() to the variable
.init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xae2e16): Section mismatch in
reference from the function ir_raw_event_free() to the variable
.init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xae2e3a): Section mismatch in
reference from the function ir_raw_event_unregister() to the variable
.init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xb35172): Section mismatch in
reference from the function btintel_enter_mfg() to the variable
.init.text:.LBB19521
>
> --
> 0-DAY CI Kernel Test Service
> https://01.org/lkp
>
I cannot understand this report. All the functions listed here seem to have
nothing to do with my patch. Can anyone explain how these errors are
related to my changes?

Thanks,

Fabio




2022-05-09 11:26:56

by kernel test robot

[permalink] [raw]
Subject: Re: [PATCH] fs/ufs: Replace kmap() with kmap_local_page()

Hi "Fabio,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on linus/master]
[also build test WARNING on v5.18-rc6 next-20220506]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url: https://github.com/intel-lab-lkp/linux/commits/Fabio-M-De-Francesco/fs-ufs-Replace-kmap-with-kmap_local_page/20220509-040920
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git e3de3a1cda5fdc3ac42cb0d45321fb254500595f
config: arm-randconfig-s032-20220508 (https://download.01.org/0day-ci/archive/20220509/[email protected]/config)
compiler: arm-linux-gnueabi-gcc (GCC) 11.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.4-dirty
# https://github.com/intel-lab-lkp/linux/commit/e73d9919e2725b216318d5d02b8a184876ab3b11
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Fabio-M-De-Francesco/fs-ufs-Replace-kmap-with-kmap_local_page/20220509-040920
git checkout e73d9919e2725b216318d5d02b8a184876ab3b11
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=arm SHELL=/bin/bash fs/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>


sparse warnings: (new ones prefixed by >>)
fs/ufs/namei.c: note: in included file:
>> fs/ufs/ufs.h:114:32: sparse: sparse: marked inline, but without a definition
>> fs/ufs/ufs.h:114:32: sparse: sparse: marked inline, but without a definition
>> fs/ufs/ufs.h:114:32: sparse: sparse: marked inline, but without a definition

vim +114 fs/ufs/ufs.h

99
100 /* dir.c */
101 extern const struct inode_operations ufs_dir_inode_operations;
102 extern int ufs_add_link (struct dentry *, struct inode *);
103 extern ino_t ufs_inode_by_name(struct inode *, const struct qstr *);
104 extern int ufs_make_empty(struct inode *, struct inode *);
105 extern struct ufs_dir_entry *ufs_find_entry(struct inode *, const struct qstr *,
106 struct page **, void **);
107 extern int ufs_delete_entry(struct inode *, struct ufs_dir_entry *, struct page *,
108 char *);
109 extern int ufs_empty_dir (struct inode *);
110 extern struct ufs_dir_entry *ufs_dotdot(struct inode *, struct page **, void **);
111 extern void ufs_set_link(struct inode *dir, struct ufs_dir_entry *de,
112 struct page *page, void *page_addr,
113 struct inode *inode, bool update_times);
> 114 extern inline void ufs_put_page(struct page *page, void *page_addr);
115

--
0-DAY CI Kernel Test Service
https://01.org/lkp

2022-05-09 11:31:11

by Chen, Rong A

[permalink] [raw]
Subject: Re: [kbuild-all] Re: [PATCH] fs/ufs: Replace kmap() with kmap_local_page()



On 5/9/2022 2:14 PM, Fabio M. De Francesco wrote:
> On lunedì 9 maggio 2022 02:25:00 CEST kernel test robot wrote:
>> Hi "Fabio,
>>

Hi Fabio,

Here is a note:

>>
>> Note: the below error/warnings can be found in parent commit:
>> << WARNING: modpost: vmlinux.o(.text+0xa76d10): Section mismatch in
> reference from the function rtc_update_irq() to the variable .init.text:.L0
>> << WARNING: modpost: vmlinux.o(.exit.text+0x9b48): Section mismatch in
> reference from the function rproc_exit_sysfs() to the variable
> .init.text:.L0
>> << WARNING: modpost: vmlinux.o(__ex_table+0x141c): Section mismatch in
> reference from the variable .L0 to the variable .debug_str:.LASF1567
>> << WARNING: modpost: vmlinux.o(.text+0xa7839c): Section mismatch in
> reference from the function rtc_get_dev_attribute_groups() to the variable
> .init.text:.L0
>> << WARNING: modpost: vmlinux.o(.text+0xae2676): Section mismatch in
> reference from the function ir_raw_get_allowed_protocols() to the variable
> .init.text:.L0
>> << WARNING: modpost: vmlinux.o(.text+0xae2cb8): Section mismatch in
> reference from the function ir_raw_event_prepare() to the variable
> .init.text:.L0
>> << WARNING: modpost: vmlinux.o(.text+0xae2e16): Section mismatch in
> reference from the function ir_raw_event_free() to the variable
> .init.text:.L0
>> << WARNING: modpost: vmlinux.o(.text+0xae2e3a): Section mismatch in
> reference from the function ir_raw_event_unregister() to the variable
> .init.text:.L0
>> << WARNING: modpost: vmlinux.o(.text+0xb35172): Section mismatch in
> reference from the function btintel_enter_mfg() to the variable
> .init.text:.LBB19521
>> << WARNING: modpost: vmlinux.o(.text+0xa76d10): Section mismatch in
> reference from the function rtc_update_irq() to the variable .init.text:.L0
>> << WARNING: modpost: vmlinux.o(.exit.text+0x9b48): Section mismatch in
> reference from the function rproc_exit_sysfs() to the variable
> .init.text:.L0
>> << WARNING: modpost: vmlinux.o(__ex_table+0x141c): Section mismatch in
> reference from the variable .L0 to the variable .debug_str:.LASF1567
>> << WARNING: modpost: vmlinux.o(.text+0xa7839c): Section mismatch in
> reference from the function rtc_get_dev_attribute_groups() to the variable
> .init.text:.L0
>> << WARNING: modpost: vmlinux.o(.text+0xae2676): Section mismatch in
> reference from the function ir_raw_get_allowed_protocols() to the variable
> .init.text:.L0
>> << WARNING: modpost: vmlinux.o(.text+0xae2cb8): Section mismatch in
> reference from the function ir_raw_event_prepare() to the variable
> .init.text:.L0
>> << WARNING: modpost: vmlinux.o(.text+0xae2e16): Section mismatch in
> reference from the function ir_raw_event_free() to the variable
> .init.text:.L0
>> << WARNING: modpost: vmlinux.o(.text+0xae2e3a): Section mismatch in
> reference from the function ir_raw_event_unregister() to the variable
> .init.text:.L0
>> << WARNING: modpost: vmlinux.o(.text+0xb35172): Section mismatch in
> reference from the function btintel_enter_mfg() to the variable
> .init.text:.LBB19521
>> << WARNING: modpost: vmlinux.o(.text+0xa76d10): Section mismatch in
> reference from the function rtc_update_irq() to the variable .init.text:.L0
>> << WARNING: modpost: vmlinux.o(.exit.text+0x9b48): Section mismatch in
> reference from the function rproc_exit_sysfs() to the variable
> .init.text:.L0
>> << WARNING: modpost: vmlinux.o(__ex_table+0x141c): Section mismatch in
> reference from the variable .L0 to the variable .debug_str:.LASF1567
>> << WARNING: modpost: vmlinux.o(.text+0xa7839c): Section mismatch in
> reference from the function rtc_get_dev_attribute_groups() to the variable
> .init.text:.L0
>> << WARNING: modpost: vmlinux.o(.text+0xae2676): Section mismatch in
> reference from the function ir_raw_get_allowed_protocols() to the variable
> .init.text:.L0
>> << WARNING: modpost: vmlinux.o(.text+0xae2cb8): Section mismatch in
> reference from the function ir_raw_event_prepare() to the variable
> .init.text:.L0
>> << WARNING: modpost: vmlinux.o(.text+0xae2e16): Section mismatch in
> reference from the function ir_raw_event_free() to the variable
> .init.text:.L0
>> << WARNING: modpost: vmlinux.o(.text+0xae2e3a): Section mismatch in
> reference from the function ir_raw_event_unregister() to the variable
> .init.text:.L0
>> << WARNING: modpost: vmlinux.o(.text+0xb35172): Section mismatch in
> reference from the function btintel_enter_mfg() to the variable
> .init.text:.LBB19521
>> << WARNING: modpost: vmlinux.o(.text+0xa76d10): Section mismatch in
> reference from the function rtc_update_irq() to the variable .init.text:.L0
>> << WARNING: modpost: vmlinux.o(.exit.text+0x9b48): Section mismatch in
> reference from the function rproc_exit_sysfs() to the variable
> .init.text:.L0
>> << WARNING: modpost: vmlinux.o(__ex_table+0x141c): Section mismatch in
> reference from the variable .L0 to the variable .debug_str:.LASF1567
>> << WARNING: modpost: vmlinux.o(.text+0xa7839c): Section mismatch in
> reference from the function rtc_get_dev_attribute_groups() to the variable
> .init.text:.L0
>> << WARNING: modpost: vmlinux.o(.text+0xae2676): Section mismatch in
> reference from the function ir_raw_get_allowed_protocols() to the variable
> .init.text:.L0
>> << WARNING: modpost: vmlinux.o(.text+0xae2cb8): Section mismatch in
> reference from the function ir_raw_event_prepare() to the variable
> .init.text:.L0
>> << WARNING: modpost: vmlinux.o(.text+0xae2e16): Section mismatch in
> reference from the function ir_raw_event_free() to the variable
> .init.text:.L0
>> << WARNING: modpost: vmlinux.o(.text+0xae2e3a): Section mismatch in
> reference from the function ir_raw_event_unregister() to the variable
> .init.text:.L0
>> << WARNING: modpost: vmlinux.o(.text+0xb35172): Section mismatch in
> reference from the function btintel_enter_mfg() to the variable
> .init.text:.LBB19521
>>
>> --
>> 0-DAY CI Kernel Test Service
>> https://01.org/lkp
>>
> I cannot understand this report. All the functions listed here seem to have
> nothing to do with my patch. Can anyone explain how these errors are
> related to my changes?
>
> Thanks,
>
> Fabio
>
>


Please ignore this report, a lot of similar warnings can be found in
parent commit.

Best Regards,
Rong Chen


2022-05-09 12:53:01

by Philip Li

[permalink] [raw]
Subject: Re: [PATCH] fs/ufs: Replace kmap() with kmap_local_page()

On Mon, May 09, 2022 at 08:25:00AM +0800, kernel test robot wrote:
> Hi "Fabio,
>
> Thank you for the patch! Perhaps something to improve:
>
> [auto build test WARNING on linus/master]
> [also build test WARNING on v5.18-rc6]
> [If your patch is applied to the wrong git tree, kindly drop us a note.
> And when submitting patch, we suggest to use '--base' as documented in
> https://git-scm.com/docs/git-format-patch]
>
> url: https://github.com/intel-lab-lkp/linux/commits/Fabio-M-De-Francesco/fs-ufs-Replace-kmap-with-kmap_local_page/20220509-040920
> base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git e3de3a1cda5fdc3ac42cb0d45321fb254500595f
> config: riscv-randconfig-r042-20220509 (https://download.01.org/0day-ci/archive/20220509/[email protected]/config)
> compiler: riscv32-linux-gcc (GCC) 11.3.0
> reproduce (this is a W=1 build):
> wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> chmod +x ~/bin/make.cross
> # https://github.com/intel-lab-lkp/linux/commit/e73d9919e2725b216318d5d02b8a184876ab3b11
> git remote add linux-review https://github.com/intel-lab-lkp/linux
> git fetch --no-tags linux-review Fabio-M-De-Francesco/fs-ufs-Replace-kmap-with-kmap_local_page/20220509-040920
> git checkout e73d9919e2725b216318d5d02b8a184876ab3b11
> # save the config file
> mkdir build_dir && cp config build_dir/.config
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross W=1 O=build_dir ARCH=riscv SHELL=/bin/bash
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <[email protected]>
>
> All warnings (new ones prefixed by >>, old ones prefixed by <<):

Sorry, kindly ignore this report, which is a false positive. We will
block such report in future.

>
> >> WARNING: modpost: vmlinux.o(.text+0xa76c20): Section mismatch in reference from the function rtc_update_irq() to the variable .init.text:.LVL13
> The function rtc_update_irq() references
> the variable __init .LVL13.
> This is often because rtc_update_irq lacks a __init
> annotation or the annotation of .LVL13 is wrong.
> --
> >> WARNING: modpost: vmlinux.o(.text+0xb35ab4): Section mismatch in reference from the function btintel_send_intel_reset() to the variable .init.text:.LBE19058
> The function btintel_send_intel_reset() references
> the variable __init .LBE19058.
> This is often because btintel_send_intel_reset lacks a __init
> annotation or the annotation of .LBE19058 is wrong.
> --
> >> WARNING: modpost: vmlinux.o(.text+0xc53984): Section mismatch in reference from the function neigh_table_clear() to the variable .init.text:$x
> The function neigh_table_clear() references
> the variable __init $x.
> This is often because neigh_table_clear lacks a __init
> annotation or the annotation of $x is wrong.
> --
> >> WARNING: modpost: vmlinux.o(__ex_table+0x141c): Section mismatch in reference from the variable .L0 to the variable .debug_str:.LASF936
> FATAL: modpost: extable_entry size hasn't been discovered!
>
> Note: the below error/warnings can be found in parent commit:
> << WARNING: modpost: vmlinux.o(.text+0xa76d10): Section mismatch in reference from the function rtc_update_irq() to the variable .init.text:.L0
> << WARNING: modpost: vmlinux.o(.exit.text+0x9b48): Section mismatch in reference from the function rproc_exit_sysfs() to the variable .init.text:.L0
> << WARNING: modpost: vmlinux.o(__ex_table+0x141c): Section mismatch in reference from the variable .L0 to the variable .debug_str:.LASF1567
> << WARNING: modpost: vmlinux.o(.text+0xa7839c): Section mismatch in reference from the function rtc_get_dev_attribute_groups() to the variable .init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xae2676): Section mismatch in reference from the function ir_raw_get_allowed_protocols() to the variable .init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xae2cb8): Section mismatch in reference from the function ir_raw_event_prepare() to the variable .init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xae2e16): Section mismatch in reference from the function ir_raw_event_free() to the variable .init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xae2e3a): Section mismatch in reference from the function ir_raw_event_unregister() to the variable .init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xb35172): Section mismatch in reference from the function btintel_enter_mfg() to the variable .init.text:.LBB19521
> << WARNING: modpost: vmlinux.o(.text+0xa76d10): Section mismatch in reference from the function rtc_update_irq() to the variable .init.text:.L0
> << WARNING: modpost: vmlinux.o(.exit.text+0x9b48): Section mismatch in reference from the function rproc_exit_sysfs() to the variable .init.text:.L0
> << WARNING: modpost: vmlinux.o(__ex_table+0x141c): Section mismatch in reference from the variable .L0 to the variable .debug_str:.LASF1567
> << WARNING: modpost: vmlinux.o(.text+0xa7839c): Section mismatch in reference from the function rtc_get_dev_attribute_groups() to the variable .init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xae2676): Section mismatch in reference from the function ir_raw_get_allowed_protocols() to the variable .init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xae2cb8): Section mismatch in reference from the function ir_raw_event_prepare() to the variable .init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xae2e16): Section mismatch in reference from the function ir_raw_event_free() to the variable .init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xae2e3a): Section mismatch in reference from the function ir_raw_event_unregister() to the variable .init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xb35172): Section mismatch in reference from the function btintel_enter_mfg() to the variable .init.text:.LBB19521
> << WARNING: modpost: vmlinux.o(.text+0xa76d10): Section mismatch in reference from the function rtc_update_irq() to the variable .init.text:.L0
> << WARNING: modpost: vmlinux.o(.exit.text+0x9b48): Section mismatch in reference from the function rproc_exit_sysfs() to the variable .init.text:.L0
> << WARNING: modpost: vmlinux.o(__ex_table+0x141c): Section mismatch in reference from the variable .L0 to the variable .debug_str:.LASF1567
> << WARNING: modpost: vmlinux.o(.text+0xa7839c): Section mismatch in reference from the function rtc_get_dev_attribute_groups() to the variable .init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xae2676): Section mismatch in reference from the function ir_raw_get_allowed_protocols() to the variable .init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xae2cb8): Section mismatch in reference from the function ir_raw_event_prepare() to the variable .init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xae2e16): Section mismatch in reference from the function ir_raw_event_free() to the variable .init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xae2e3a): Section mismatch in reference from the function ir_raw_event_unregister() to the variable .init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xb35172): Section mismatch in reference from the function btintel_enter_mfg() to the variable .init.text:.LBB19521
> << WARNING: modpost: vmlinux.o(.text+0xa76d10): Section mismatch in reference from the function rtc_update_irq() to the variable .init.text:.L0
> << WARNING: modpost: vmlinux.o(.exit.text+0x9b48): Section mismatch in reference from the function rproc_exit_sysfs() to the variable .init.text:.L0
> << WARNING: modpost: vmlinux.o(__ex_table+0x141c): Section mismatch in reference from the variable .L0 to the variable .debug_str:.LASF1567
> << WARNING: modpost: vmlinux.o(.text+0xa7839c): Section mismatch in reference from the function rtc_get_dev_attribute_groups() to the variable .init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xae2676): Section mismatch in reference from the function ir_raw_get_allowed_protocols() to the variable .init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xae2cb8): Section mismatch in reference from the function ir_raw_event_prepare() to the variable .init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xae2e16): Section mismatch in reference from the function ir_raw_event_free() to the variable .init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xae2e3a): Section mismatch in reference from the function ir_raw_event_unregister() to the variable .init.text:.L0
> << WARNING: modpost: vmlinux.o(.text+0xb35172): Section mismatch in reference from the function btintel_enter_mfg() to the variable .init.text:.LBB19521
>
> --
> 0-DAY CI Kernel Test Service
> https://01.org/lkp