From: Greg Kroah-Hartman Date: Wed, 9 Aug 2023 09:03:16 +0000 (+0200) Subject: drop queue-5.10/exfat-move-exfat_entry_set_cache-from-heap-to-stack.patch X-Git-Tag: v4.14.322~15 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b5269bef5de6d78f2f251542f481f7dde0563a94;p=thirdparty%2Fkernel%2Fstable-queue.git drop queue-5.10/exfat-move-exfat_entry_set_cache-from-heap-to-stack.patch --- diff --git a/queue-5.10/exfat-check-if-filename-entries-exceeds-max-filename.patch b/queue-5.10/exfat-check-if-filename-entries-exceeds-max-filename.patch index 49359209c61..be68a9472ab 100644 --- a/queue-5.10/exfat-check-if-filename-entries-exceeds-max-filename.patch +++ b/queue-5.10/exfat-check-if-filename-entries-exceeds-max-filename.patch @@ -23,22 +23,20 @@ Reviewed-by: Sungjong Seo Signed-off-by: Namjae Jeon Signed-off-by: Sasha Levin --- - fs/exfat/dir.c | 9 +++++++-- + fs/exfat/dir.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) -diff --git a/fs/exfat/dir.c b/fs/exfat/dir.c -index d2be36ddc18a5..4e9b85d35d938 100644 --- a/fs/exfat/dir.c +++ b/fs/exfat/dir.c -@@ -33,6 +33,7 @@ static void exfat_get_uniname_from_ext_entry(struct super_block *sb, +@@ -33,6 +33,7 @@ static void exfat_get_uniname_from_ext_e { int i; - struct exfat_entry_set_cache es; + struct exfat_entry_set_cache *es; + unsigned int uni_len = 0, len; - if (exfat_get_dentry_set(&es, sb, p_dir, entry, ES_ALL_ENTRIES)) - return; -@@ -50,7 +51,10 @@ static void exfat_get_uniname_from_ext_entry(struct super_block *sb, + es = exfat_get_dentry_set(sb, p_dir, entry, ES_ALL_ENTRIES); + if (!es) +@@ -51,7 +52,10 @@ static void exfat_get_uniname_from_ext_e if (exfat_get_entry_type(ep) != TYPE_EXTEND) break; @@ -50,7 +48,7 @@ index d2be36ddc18a5..4e9b85d35d938 100644 uniname += EXFAT_FILE_NAME_LEN; } -@@ -1037,7 +1041,8 @@ int exfat_find_dir_entry(struct super_block *sb, struct exfat_inode_info *ei, +@@ -1042,7 +1046,8 @@ rewind: if (entry_type == TYPE_EXTEND) { unsigned short entry_uniname[16], unichar; @@ -60,6 +58,3 @@ index d2be36ddc18a5..4e9b85d35d938 100644 step = DIRENT_STEP_FILE; continue; } --- -2.40.1 - diff --git a/queue-5.10/exfat-move-exfat_entry_set_cache-from-heap-to-stack.patch b/queue-5.10/exfat-move-exfat_entry_set_cache-from-heap-to-stack.patch deleted file mode 100644 index 79bf5963569..00000000000 --- a/queue-5.10/exfat-move-exfat_entry_set_cache-from-heap-to-stack.patch +++ /dev/null @@ -1,239 +0,0 @@ -From 6c290ca5ee81f3322bcc3c5a7879a0e100405040 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Thu, 17 Nov 2022 11:37:13 +0800 -Subject: exfat: move exfat_entry_set_cache from heap to stack - -From: Yuezhang Mo - -[ Upstream commit 20914ff6dd56dd6b548bf5dd90bff09ef89999e4 ] - -The size of struct exfat_entry_set_cache is only 56 bytes on -64-bit system, and allocating from stack is more efficient than -allocating from heap. - -Signed-off-by: Yuezhang Mo -Reviewed-by: Andy Wu -Reviewed-by: Aoyama Wataru -Reviewed-by: Sungjong Seo -Signed-off-by: Namjae Jeon -Stable-dep-of: d42334578eba ("exfat: check if filename entries exceeds max filename length") -Signed-off-by: Sasha Levin ---- - fs/exfat/dir.c | 35 +++++++++++++++-------------------- - fs/exfat/exfat_fs.h | 5 +++-- - fs/exfat/inode.c | 13 ++++++------- - fs/exfat/namei.c | 11 +++++------ - 4 files changed, 29 insertions(+), 35 deletions(-) - -diff --git a/fs/exfat/dir.c b/fs/exfat/dir.c -index 185aa13945d3d..d2be36ddc18a5 100644 ---- a/fs/exfat/dir.c -+++ b/fs/exfat/dir.c -@@ -32,10 +32,9 @@ static void exfat_get_uniname_from_ext_entry(struct super_block *sb, - struct exfat_chain *p_dir, int entry, unsigned short *uniname) - { - int i; -- struct exfat_entry_set_cache *es; -+ struct exfat_entry_set_cache es; - -- es = exfat_get_dentry_set(sb, p_dir, entry, ES_ALL_ENTRIES); -- if (!es) -+ if (exfat_get_dentry_set(&es, sb, p_dir, entry, ES_ALL_ENTRIES)) - return; - - /* -@@ -44,8 +43,8 @@ static void exfat_get_uniname_from_ext_entry(struct super_block *sb, - * Third entry : first file-name entry - * So, the index of first file-name dentry should start from 2. - */ -- for (i = 2; i < es->num_entries; i++) { -- struct exfat_dentry *ep = exfat_get_dentry_cached(es, i); -+ for (i = 2; i < es.num_entries; i++) { -+ struct exfat_dentry *ep = exfat_get_dentry_cached(&es, i); - - /* end of name entry */ - if (exfat_get_entry_type(ep) != TYPE_EXTEND) -@@ -55,7 +54,7 @@ static void exfat_get_uniname_from_ext_entry(struct super_block *sb, - uniname += EXFAT_FILE_NAME_LEN; - } - -- exfat_free_dentry_set(es, false); -+ exfat_free_dentry_set(&es, false); - } - - /* read a directory entry from the opened directory */ -@@ -613,7 +612,6 @@ int exfat_free_dentry_set(struct exfat_entry_set_cache *es, int sync) - if (IS_DYNAMIC_ES(es)) - kfree(es->bh); - -- kfree(es); - return err; - } - -@@ -813,14 +811,14 @@ struct exfat_dentry *exfat_get_dentry_cached( - * pointer of entry set on success, - * NULL on failure. - */ --struct exfat_entry_set_cache *exfat_get_dentry_set(struct super_block *sb, -- struct exfat_chain *p_dir, int entry, unsigned int type) -+int exfat_get_dentry_set(struct exfat_entry_set_cache *es, -+ struct super_block *sb, struct exfat_chain *p_dir, int entry, -+ unsigned int type) - { - int ret, i, num_bh; - unsigned int off, byte_offset, clu = 0; - sector_t sec; - struct exfat_sb_info *sbi = EXFAT_SB(sb); -- struct exfat_entry_set_cache *es; - struct exfat_dentry *ep; - int num_entries; - enum exfat_validate_dentry_mode mode = ES_MODE_STARTED; -@@ -828,17 +826,15 @@ struct exfat_entry_set_cache *exfat_get_dentry_set(struct super_block *sb, - - if (p_dir->dir == DIR_DELETED) { - exfat_err(sb, "access to deleted dentry"); -- return NULL; -+ return -EIO; - } - - byte_offset = EXFAT_DEN_TO_B(entry); - ret = exfat_walk_fat_chain(sb, p_dir, byte_offset, &clu); - if (ret) -- return NULL; -+ return ret; - -- es = kzalloc(sizeof(*es), GFP_KERNEL); -- if (!es) -- return NULL; -+ memset(es, 0, sizeof(*es)); - es->sb = sb; - es->modified = false; - -@@ -856,7 +852,7 @@ struct exfat_entry_set_cache *exfat_get_dentry_set(struct super_block *sb, - - bh = sb_bread(sb, sec); - if (!bh) -- goto free_es; -+ return -EIO; - es->bh[es->num_bh++] = bh; - - ep = exfat_get_dentry_cached(es, 0); -@@ -872,8 +868,7 @@ struct exfat_entry_set_cache *exfat_get_dentry_set(struct super_block *sb, - es->bh = kmalloc_array(num_bh, sizeof(*es->bh), GFP_KERNEL); - if (!es->bh) { - brelse(bh); -- kfree(es); -- return NULL; -+ return -ENOMEM; - } - es->bh[0] = bh; - } -@@ -902,11 +897,11 @@ struct exfat_entry_set_cache *exfat_get_dentry_set(struct super_block *sb, - if (!exfat_validate_entry(exfat_get_entry_type(ep), &mode)) - goto free_es; - } -- return es; -+ return 0; - - free_es: - exfat_free_dentry_set(es, false); -- return NULL; -+ return -EIO; - } - - enum { -diff --git a/fs/exfat/exfat_fs.h b/fs/exfat/exfat_fs.h -index 11e579a2598d8..6ecc7a51b4d18 100644 ---- a/fs/exfat/exfat_fs.h -+++ b/fs/exfat/exfat_fs.h -@@ -470,8 +470,9 @@ struct exfat_dentry *exfat_get_dentry(struct super_block *sb, - sector_t *sector); - struct exfat_dentry *exfat_get_dentry_cached(struct exfat_entry_set_cache *es, - int num); --struct exfat_entry_set_cache *exfat_get_dentry_set(struct super_block *sb, -- struct exfat_chain *p_dir, int entry, unsigned int type); -+int exfat_get_dentry_set(struct exfat_entry_set_cache *es, -+ struct super_block *sb, struct exfat_chain *p_dir, int entry, -+ unsigned int type); - int exfat_free_dentry_set(struct exfat_entry_set_cache *es, int sync); - int exfat_count_dir_entries(struct super_block *sb, struct exfat_chain *p_dir); - -diff --git a/fs/exfat/inode.c b/fs/exfat/inode.c -index 4bd73820a4ac0..7f70284da530f 100644 ---- a/fs/exfat/inode.c -+++ b/fs/exfat/inode.c -@@ -21,7 +21,7 @@ static int __exfat_write_inode(struct inode *inode, int sync) - { - unsigned long long on_disk_size; - struct exfat_dentry *ep, *ep2; -- struct exfat_entry_set_cache *es = NULL; -+ struct exfat_entry_set_cache es; - struct super_block *sb = inode->i_sb; - struct exfat_sb_info *sbi = EXFAT_SB(sb); - struct exfat_inode_info *ei = EXFAT_I(inode); -@@ -42,11 +42,10 @@ static int __exfat_write_inode(struct inode *inode, int sync) - exfat_set_volume_dirty(sb); - - /* get the directory entry of given file or directory */ -- es = exfat_get_dentry_set(sb, &(ei->dir), ei->entry, ES_ALL_ENTRIES); -- if (!es) -+ if (exfat_get_dentry_set(&es, sb, &(ei->dir), ei->entry, ES_ALL_ENTRIES)) - return -EIO; -- ep = exfat_get_dentry_cached(es, 0); -- ep2 = exfat_get_dentry_cached(es, 1); -+ ep = exfat_get_dentry_cached(&es, 0); -+ ep2 = exfat_get_dentry_cached(&es, 1); - - ep->dentry.file.attr = cpu_to_le16(exfat_make_attr(inode)); - -@@ -76,8 +75,8 @@ static int __exfat_write_inode(struct inode *inode, int sync) - ep2->dentry.stream.valid_size = cpu_to_le64(on_disk_size); - ep2->dentry.stream.size = ep2->dentry.stream.valid_size; - -- exfat_update_dir_chksum_with_entry_set(es); -- return exfat_free_dentry_set(es, sync); -+ exfat_update_dir_chksum_with_entry_set(&es); -+ return exfat_free_dentry_set(&es, sync); - } - - int exfat_write_inode(struct inode *inode, struct writeback_control *wbc) -diff --git a/fs/exfat/namei.c b/fs/exfat/namei.c -index bd00afc5e4c16..10062b5282bd0 100644 ---- a/fs/exfat/namei.c -+++ b/fs/exfat/namei.c -@@ -595,7 +595,7 @@ static int exfat_find(struct inode *dir, struct qstr *qname, - struct exfat_sb_info *sbi = EXFAT_SB(sb); - struct exfat_inode_info *ei = EXFAT_I(dir); - struct exfat_dentry *ep, *ep2; -- struct exfat_entry_set_cache *es; -+ struct exfat_entry_set_cache es; - /* for optimized dir & entry to prevent long traverse of cluster chain */ - struct exfat_hint hint_opt; - -@@ -635,11 +635,10 @@ static int exfat_find(struct inode *dir, struct qstr *qname, - if (cdir.flags & ALLOC_NO_FAT_CHAIN) - cdir.size -= dentry / sbi->dentries_per_clu; - dentry = hint_opt.eidx; -- es = exfat_get_dentry_set(sb, &cdir, dentry, ES_2_ENTRIES); -- if (!es) -+ if (exfat_get_dentry_set(&es, sb, &cdir, dentry, ES_2_ENTRIES)) - return -EIO; -- ep = exfat_get_dentry_cached(es, 0); -- ep2 = exfat_get_dentry_cached(es, 1); -+ ep = exfat_get_dentry_cached(&es, 0); -+ ep2 = exfat_get_dentry_cached(&es, 1); - - info->type = exfat_get_entry_type(ep); - info->attr = le16_to_cpu(ep->dentry.file.attr); -@@ -668,7 +667,7 @@ static int exfat_find(struct inode *dir, struct qstr *qname, - ep->dentry.file.access_time, - ep->dentry.file.access_date, - 0); -- exfat_free_dentry_set(es, false); -+ exfat_free_dentry_set(&es, false); - - if (ei->start_clu == EXFAT_FREE_CLUSTER) { - exfat_fs_error(sb, --- -2.40.1 - diff --git a/queue-5.10/series b/queue-5.10/series index b1a968473f1..e7f03966460 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -192,7 +192,6 @@ pm-wakeirq-support-enabling-wake-up-irq-after-runtim.patch pm-sleep-wakeirq-fix-wake-irq-arming.patch exfat-speed-up-iterate-lookup-by-fixing-start-point-.patch exfat-support-dynamic-allocate-bh-for-exfat_entry_se.patch -exfat-move-exfat_entry_set_cache-from-heap-to-stack.patch exfat-check-if-filename-entries-exceeds-max-filename.patch mt76-move-band-capabilities-in-mt76_phy.patch mt76-mt7615-fix-fall-through-warnings-for-clang.patch