diff --git a/distributions/LibreELEC/kernel_options b/distributions/LibreELEC/kernel_options index acc9b650a7..9e72ce0708 100644 --- a/distributions/LibreELEC/kernel_options +++ b/distributions/LibreELEC/kernel_options @@ -30,6 +30,8 @@ CONFIG_NLMON=m # packages/network/wireguard CONFIG_NET=y CONFIG_INET=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_MULTIPLE_TABLES=y CONFIG_NET_UDP_TUNNEL=m CONFIG_CRYPTO_ALGAPI=y CONFIG_WIREGUARD=m diff --git a/packages/linux-drivers/RTL8812AU/package.mk b/packages/linux-drivers/RTL8812AU/package.mk index 4e915617fd..73ee846901 100644 --- a/packages/linux-drivers/RTL8812AU/package.mk +++ b/packages/linux-drivers/RTL8812AU/package.mk @@ -3,8 +3,8 @@ # Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv) PKG_NAME="RTL8812AU" -PKG_VERSION="37e27f9165300c89607144b646545fac576ec510" -PKG_SHA256="749ba2e77d0364381445e40f7f0b7041d861cf9a356dbe53085e3abaef888c1d" +PKG_VERSION="cab4e4ec56884f65e0c279c1b5ceaf70dbe79be0" +PKG_SHA256="20b498bc597e5343ee6c240eabd45c36894db86c76f6bfc100448c8b9c420733" PKG_LICENSE="GPL" PKG_SITE="https://github.com/aircrack-ng/rtl8812au" PKG_URL="https://github.com/aircrack-ng/rtl8812au/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/linux-drivers/RTL8812AU/patches/RTL8812AU-0001-fix-5-18.patch b/packages/linux-drivers/RTL8812AU/patches/RTL8812AU-0001-fix-5-18.patch deleted file mode 100644 index 443377892d..0000000000 --- a/packages/linux-drivers/RTL8812AU/patches/RTL8812AU-0001-fix-5-18.patch +++ /dev/null @@ -1,24 +0,0 @@ ---- a/include/ieee80211.h 2022-04-25 12:34:26.110654447 +0000 -+++ b/include/ieee80211.h 2022-04-25 12:34:26.110654447 +0000 -@@ -1616,18 +1616,18 @@ - (((Addr[2]) & 0xff) == 0xff) && (((Addr[3]) & 0xff) == 0xff) && (((Addr[4]) & 0xff) == 0xff) && \ - (((Addr[5]) & 0xff) == 0xff)) - #else --extern __inline int is_multicast_mac_addr(const u8 *addr) -+static inline int is_multicast_mac_addr(const u8 *addr) - { - return (addr[0] != 0xff) && (0x01 & addr[0]); - } - --extern __inline int is_broadcast_mac_addr(const u8 *addr) -+static inline int is_broadcast_mac_addr(const u8 *addr) - { - return ((addr[0] == 0xff) && (addr[1] == 0xff) && (addr[2] == 0xff) && \ - (addr[3] == 0xff) && (addr[4] == 0xff) && (addr[5] == 0xff)); - } - --extern __inline int is_zero_mac_addr(const u8 *addr) -+static inline int is_zero_mac_addr(const u8 *addr) - { - return ((addr[0] == 0x00) && (addr[1] == 0x00) && (addr[2] == 0x00) && \ - (addr[3] == 0x00) && (addr[4] == 0x00) && (addr[5] == 0x00)); diff --git a/packages/linux/package.mk b/packages/linux/package.mk index ce9997d461..bd88b56332 100644 --- a/packages/linux/package.mk +++ b/packages/linux/package.mk @@ -28,8 +28,8 @@ case "${LINUX}" in PKG_SOURCE_NAME="linux-${LINUX}-${PKG_VERSION}.tar.gz" ;; *) - PKG_VERSION="5.18" - PKG_SHA256="51f3f1684a896e797182a0907299cc1f0ff5e5b51dd9a55478ae63a409855cee" + PKG_VERSION="5.18.3" + PKG_SHA256="c70cb405076c3cfd73e4de729430b0342ea21b92a04d8284a03fac664ef1cfea" PKG_URL="https://www.kernel.org/pub/linux/kernel/v5.x/${PKG_NAME}-${PKG_VERSION}.tar.xz" PKG_PATCH_DIRS="default" ;; diff --git a/packages/linux/patches/default/fs-ntfs3-since-5-15.patch b/packages/linux/patches/default/fs-ntfs3-since-5-15.patch index 2fb16c72ff..60c54cd4a3 100644 --- a/packages/linux/patches/default/fs-ntfs3-since-5-15.patch +++ b/packages/linux/patches/default/fs-ntfs3-since-5-15.patch @@ -1,259 +1,7 @@ -From e589f9b7078e1c0191613cd736f598e81d2390de Mon Sep 17 00:00:00 2001 -From: Christophe JAILLET -Date: Thu, 11 Nov 2021 08:45:44 +0100 -Subject: [PATCH 1/9] fs/ntfs3: Fix some memory leaks in an error handling path - of 'log_replay()' - -All error handling paths lead to 'out' where many resources are freed. - -Do it as well here instead of a direct return, otherwise 'log', 'ra' and -'log->one_page_buf' (at least) will leak. - -Fixes: b46acd6a6a62 ("fs/ntfs3: Add NTFS journal") -Signed-off-by: Christophe JAILLET -Signed-off-by: Konstantin Komarov ---- - fs/ntfs3/fslog.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/fs/ntfs3/fslog.c b/fs/ntfs3/fslog.c -index 06492f088d60..915f42cf07bc 100644 ---- a/fs/ntfs3/fslog.c -+++ b/fs/ntfs3/fslog.c -@@ -4085,8 +4085,10 @@ int log_replay(struct ntfs_inode *ni, bool *initialized) - if (client == LFS_NO_CLIENT_LE) { - /* Insert "NTFS" client LogFile. */ - client = ra->client_idx[0]; -- if (client == LFS_NO_CLIENT_LE) -- return -EINVAL; -+ if (client == LFS_NO_CLIENT_LE) { -+ err = -EINVAL; -+ goto out; -+ } - - t16 = le16_to_cpu(client); - cr = ca + t16; --- -2.25.1 - -From e95113ed4d428219e3395044e29f5713fc446720 Mon Sep 17 00:00:00 2001 -From: Konstantin Komarov -Date: Fri, 22 Oct 2021 17:37:52 +0300 -Subject: [PATCH 2/9] fs/ntfs3: Keep preallocated only if option prealloc - enabled - -If size of file was reduced, we still kept allocated blocks. -This commit makes ntfs3 work as other fs like btrfs. -Link: https://bugzilla.kernel.org/show_bug.cgi?id=214719 -Fixes: 4342306f0f0d ("fs/ntfs3: Add file operations and implementation") - -Reported-by: Ganapathi Kamath -Tested-by: Ganapathi Kamath -Reviewed-by: Kari Argillander -Signed-off-by: Konstantin Komarov ---- - fs/ntfs3/file.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/fs/ntfs3/file.c b/fs/ntfs3/file.c -index 43b1451bff53..3ac0482c6880 100644 ---- a/fs/ntfs3/file.c -+++ b/fs/ntfs3/file.c -@@ -494,7 +494,7 @@ static int ntfs_truncate(struct inode *inode, loff_t new_size) - - down_write(&ni->file.run_lock); - err = attr_set_size(ni, ATTR_DATA, NULL, 0, &ni->file.run, new_size, -- &new_valid, true, NULL); -+ &new_valid, ni->mi.sbi->options->prealloc, NULL); - up_write(&ni->file.run_lock); - - if (new_valid < ni->i_valid) --- -2.25.1 - -From 87e21c99bad763524c953ff4d1a61ee19038ddc2 Mon Sep 17 00:00:00 2001 -From: Konstantin Komarov -Date: Fri, 22 Oct 2021 18:15:36 +0300 -Subject: [PATCH 3/9] fs/ntfs3: Restore ntfs_xattr_get_acl and - ntfs_xattr_set_acl functions - -Apparently we need to maintain these functions with -ntfs_get_acl_ex and ntfs_set_acl_ex. -This commit fixes xfstest generic/099 -Fixes: 95dd8b2c1ed0 ("fs/ntfs3: Remove unnecessary functions") - -Reviewed-by: Kari Argillander -Signed-off-by: Konstantin Komarov ---- - fs/ntfs3/xattr.c | 96 +++++++++++++++++++++++++++++++++++++++++++++++- - 1 file changed, 95 insertions(+), 1 deletion(-) - -diff --git a/fs/ntfs3/xattr.c b/fs/ntfs3/xattr.c -index afd0ddad826f..56e774d0f56a 100644 ---- a/fs/ntfs3/xattr.c -+++ b/fs/ntfs3/xattr.c -@@ -112,7 +112,7 @@ static int ntfs_read_ea(struct ntfs_inode *ni, struct EA_FULL **ea, - return -ENOMEM; - - if (!size) { -- ; -+ /* EA info persists, but xattr is empty. Looks like EA problem. */ - } else if (attr_ea->non_res) { - struct runs_tree run; - -@@ -619,6 +619,67 @@ int ntfs_set_acl(struct user_namespace *mnt_userns, struct inode *inode, - return ntfs_set_acl_ex(mnt_userns, inode, acl, type); - } - -+static int ntfs_xattr_get_acl(struct user_namespace *mnt_userns, -+ struct inode *inode, int type, void *buffer, -+ size_t size) -+{ -+ struct posix_acl *acl; -+ int err; -+ -+ if (!(inode->i_sb->s_flags & SB_POSIXACL)) { -+ ntfs_inode_warn(inode, "add mount option \"acl\" to use acl"); -+ return -EOPNOTSUPP; -+ } -+ -+ acl = ntfs_get_acl(inode, type, false); -+ if (IS_ERR(acl)) -+ return PTR_ERR(acl); -+ -+ if (!acl) -+ return -ENODATA; -+ -+ err = posix_acl_to_xattr(mnt_userns, acl, buffer, size); -+ posix_acl_release(acl); -+ -+ return err; -+} -+ -+static int ntfs_xattr_set_acl(struct user_namespace *mnt_userns, -+ struct inode *inode, int type, const void *value, -+ size_t size) -+{ -+ struct posix_acl *acl; -+ int err; -+ -+ if (!(inode->i_sb->s_flags & SB_POSIXACL)) { -+ ntfs_inode_warn(inode, "add mount option \"acl\" to use acl"); -+ return -EOPNOTSUPP; -+ } -+ -+ if (!inode_owner_or_capable(mnt_userns, inode)) -+ return -EPERM; -+ -+ if (!value) { -+ acl = NULL; -+ } else { -+ acl = posix_acl_from_xattr(mnt_userns, value, size); -+ if (IS_ERR(acl)) -+ return PTR_ERR(acl); -+ -+ if (acl) { -+ err = posix_acl_valid(mnt_userns, acl); -+ if (err) -+ goto release_and_out; -+ } -+ } -+ -+ err = ntfs_set_acl(mnt_userns, inode, acl, type); -+ -+release_and_out: -+ posix_acl_release(acl); -+ return err; -+} -+ - /* - * ntfs_init_acl - Initialize the ACLs of a new inode. - * -@@ -785,6 +846,23 @@ static int ntfs_getxattr(const struct xattr_handler *handler, struct dentry *de, - goto out; - } - -+#ifdef CONFIG_NTFS3_FS_POSIX_ACL -+ if ((name_len == sizeof(XATTR_NAME_POSIX_ACL_ACCESS) - 1 && -+ !memcmp(name, XATTR_NAME_POSIX_ACL_ACCESS, -+ sizeof(XATTR_NAME_POSIX_ACL_ACCESS))) || -+ (name_len == sizeof(XATTR_NAME_POSIX_ACL_DEFAULT) - 1 && -+ !memcmp(name, XATTR_NAME_POSIX_ACL_DEFAULT, -+ sizeof(XATTR_NAME_POSIX_ACL_DEFAULT)))) { -+ /* TODO: init_user_ns? */ -+ err = ntfs_xattr_get_acl( -+ &init_user_ns, inode, -+ name_len == sizeof(XATTR_NAME_POSIX_ACL_ACCESS) - 1 -+ ? ACL_TYPE_ACCESS -+ : ACL_TYPE_DEFAULT, -+ buffer, size); -+ goto out; -+ } -+#endif - /* Deal with NTFS extended attribute. */ - err = ntfs_get_ea(inode, name, name_len, buffer, size, NULL); - -@@ -897,6 +975,22 @@ static noinline int ntfs_setxattr(const struct xattr_handler *handler, - goto out; - } - -+#ifdef CONFIG_NTFS3_FS_POSIX_ACL -+ if ((name_len == sizeof(XATTR_NAME_POSIX_ACL_ACCESS) - 1 && -+ !memcmp(name, XATTR_NAME_POSIX_ACL_ACCESS, -+ sizeof(XATTR_NAME_POSIX_ACL_ACCESS))) || -+ (name_len == sizeof(XATTR_NAME_POSIX_ACL_DEFAULT) - 1 && -+ !memcmp(name, XATTR_NAME_POSIX_ACL_DEFAULT, -+ sizeof(XATTR_NAME_POSIX_ACL_DEFAULT)))) { -+ err = ntfs_xattr_set_acl( -+ mnt_userns, inode, -+ name_len == sizeof(XATTR_NAME_POSIX_ACL_ACCESS) - 1 -+ ? ACL_TYPE_ACCESS -+ : ACL_TYPE_DEFAULT, -+ value, size); -+ goto out; -+ } -+#endif - /* Deal with NTFS extended attribute. */ - err = ntfs_set_ea(inode, name, name_len, value, size, flags); - --- -2.25.1 - -From 2d44667c306e7806848a3478820f87343feb5421 Mon Sep 17 00:00:00 2001 -From: Konstantin Komarov -Date: Fri, 22 Oct 2021 18:35:43 +0300 -Subject: [PATCH 4/9] fs/ntfs3: Update i_ctime when xattr is added - -Ctime wasn't updated after setfacl command. -This commit fixes xfstest generic/307 -Fixes: be71b5cba2e6 ("fs/ntfs3: Add attrib operations") - -Signed-off-by: Konstantin Komarov ---- - fs/ntfs3/xattr.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/fs/ntfs3/xattr.c b/fs/ntfs3/xattr.c -index 56e774d0f56a..af818300493d 100644 ---- a/fs/ntfs3/xattr.c -+++ b/fs/ntfs3/xattr.c -@@ -995,6 +995,9 @@ static noinline int ntfs_setxattr(const struct xattr_handler *handler, - err = ntfs_set_ea(inode, name, name_len, value, size, flags); - - out: -+ inode->i_ctime = current_time(inode); -+ mark_inode_dirty(inode); -+ - return err; - } - --- -2.25.1 - From 3a2154b25a9f461a1848371b3e8f6f316434ae1f Mon Sep 17 00:00:00 2001 From: Konstantin Komarov Date: Fri, 22 Oct 2021 18:30:22 +0300 -Subject: [PATCH 5/9] fs/ntfs3: Optimize locking in ntfs_save_wsl_perm +Subject: fs/ntfs3: Optimize locking in ntfs_save_wsl_perm Right now in ntfs_save_wsl_perm we lock/unlock 4 times. This commit fixes this situation. @@ -267,10 +15,10 @@ Signed-off-by: Konstantin Komarov 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/fs/ntfs3/xattr.c b/fs/ntfs3/xattr.c -index af818300493d..94a277615b62 100644 +index af818300493dc..94a277615b629 100644 --- a/fs/ntfs3/xattr.c +++ b/fs/ntfs3/xattr.c -@@ -259,7 +259,7 @@ static int ntfs_get_ea(struct inode *inode, const char *name, size_t name_len, +@@ -259,7 +259,7 @@ out: static noinline int ntfs_set_ea(struct inode *inode, const char *name, size_t name_len, const void *value, @@ -289,7 +37,7 @@ index af818300493d..94a277615b62 100644 run_init(&ea_run); -@@ -467,7 +468,8 @@ static noinline int ntfs_set_ea(struct inode *inode, const char *name, +@@ -467,7 +468,8 @@ update_ea: mark_inode_dirty(&ni->vfs_inode); out: @@ -308,7 +56,7 @@ index af818300493d..94a277615b62 100644 if (err == -ENODATA && !size) err = 0; /* Removing non existed xattr. */ if (!err) -@@ -992,7 +994,7 @@ static noinline int ntfs_setxattr(const struct xattr_handler *handler, +@@ -992,7 +994,7 @@ set_new_fa: } #endif /* Deal with NTFS extended attribute. */ @@ -361,233 +109,5 @@ index af818300493d..94a277615b62 100644 return err; } -- -2.25.1 - -From 9186d472ee780fabf74424756c4c00545166157e Mon Sep 17 00:00:00 2001 -From: Konstantin Komarov -Date: Wed, 24 Nov 2021 15:08:19 +0300 -Subject: [PATCH 6/9] fs/ntfs3: In function ntfs_set_acl_ex do not change - inode->i_mode if called from function ntfs_init_acl - -ntfs_init_acl sets mode. ntfs_init_acl calls ntfs_set_acl_ex. -ntfs_set_acl_ex must not change this mode. -Fixes xfstest generic/444 -Fixes: be71b5cba2e6 ("fs/ntfs3: Add attrib operations") - -Reviewed-by: Joe Perches -Signed-off-by: Konstantin Komarov ---- - fs/ntfs3/xattr.c | 13 +++++++------ - 1 file changed, 7 insertions(+), 6 deletions(-) - -diff --git a/fs/ntfs3/xattr.c b/fs/ntfs3/xattr.c -index 94a277615b62..5e0e0280e70d 100644 ---- a/fs/ntfs3/xattr.c -+++ b/fs/ntfs3/xattr.c -@@ -543,7 +543,7 @@ struct posix_acl *ntfs_get_acl(struct inode *inode, int type, bool rcu) - - static noinline int ntfs_set_acl_ex(struct user_namespace *mnt_userns, - struct inode *inode, struct posix_acl *acl, -- int type) -+ int type, bool init_acl) - { - const char *name; - size_t size, name_len; -@@ -556,8 +556,9 @@ static noinline int ntfs_set_acl_ex(struct user_namespace *mnt_userns, - - switch (type) { - case ACL_TYPE_ACCESS: -- if (acl) { -- umode_t mode = inode->i_mode; -+ /* Do not change i_mode if we are in init_acl */ -+ if (acl && !init_acl) { -+ umode_t mode; - - err = posix_acl_update_mode(mnt_userns, inode, &mode, - &acl); -@@ -618,7 +619,7 @@ static noinline int ntfs_set_acl_ex(struct user_namespace *mnt_userns, - int ntfs_set_acl(struct user_namespace *mnt_userns, struct inode *inode, - struct posix_acl *acl, int type) - { -- return ntfs_set_acl_ex(mnt_userns, inode, acl, type); -+ return ntfs_set_acl_ex(mnt_userns, inode, acl, type, false); - } - - static int ntfs_xattr_get_acl(struct user_namespace *mnt_userns, -@@ -699,7 +700,7 @@ int ntfs_init_acl(struct user_namespace *mnt_userns, struct inode *inode, - - if (default_acl) { - err = ntfs_set_acl_ex(mnt_userns, inode, default_acl, -- ACL_TYPE_DEFAULT); -+ ACL_TYPE_DEFAULT, true); - posix_acl_release(default_acl); - } else { - inode->i_default_acl = NULL; -@@ -710,7 +711,7 @@ int ntfs_init_acl(struct user_namespace *mnt_userns, struct inode *inode, - else { - if (!err) - err = ntfs_set_acl_ex(mnt_userns, inode, acl, -- ACL_TYPE_ACCESS); -+ ACL_TYPE_ACCESS, true); - posix_acl_release(acl); - } - --- -2.25.1 - -From 3880f2b816a7e4ca889b7e8a42e6c62c5706ed36 Mon Sep 17 00:00:00 2001 -From: Konstantin Komarov -Date: Mon, 25 Oct 2021 18:31:28 +0300 -Subject: [PATCH 7/9] fs/ntfs3: Fix fiemap + fix shrink file size (to remove - preallocated space) - -Two problems: -1. ntfs3_setattr can't truncate preallocated space; -2. if allocated fragment "cross" valid size, then fragment splits into two parts: -- normal part; -- unwritten part (here we must return FIEMAP_EXTENT_LAST). -Before this commit we returned FIEMAP_EXTENT_LAST for whole fragment. -Fixes xfstest generic/092 -Fixes: 4342306f0f0d ("fs/ntfs3: Add file operations and implementation") - -Signed-off-by: Konstantin Komarov ---- - fs/ntfs3/file.c | 2 +- - fs/ntfs3/frecord.c | 10 +++++++--- - 2 files changed, 8 insertions(+), 4 deletions(-) - -diff --git a/fs/ntfs3/file.c b/fs/ntfs3/file.c -index 3ac0482c6880..6242708980d0 100644 ---- a/fs/ntfs3/file.c -+++ b/fs/ntfs3/file.c -@@ -761,7 +761,7 @@ int ntfs3_setattr(struct user_namespace *mnt_userns, struct dentry *dentry, - } - inode_dio_wait(inode); - -- if (attr->ia_size < oldsize) -+ if (attr->ia_size <= oldsize) - err = ntfs_truncate(inode, attr->ia_size); - else if (attr->ia_size > oldsize) - err = ntfs_extend(inode, attr->ia_size, 0, NULL); -diff --git a/fs/ntfs3/frecord.c b/fs/ntfs3/frecord.c -index 6f47a9c17f89..18842998c8fa 100644 ---- a/fs/ntfs3/frecord.c -+++ b/fs/ntfs3/frecord.c -@@ -1964,10 +1964,8 @@ int ni_fiemap(struct ntfs_inode *ni, struct fiemap_extent_info *fieinfo, - - vcn += clen; - -- if (vbo + bytes >= end) { -+ if (vbo + bytes >= end) - bytes = end - vbo; -- flags |= FIEMAP_EXTENT_LAST; -- } - - if (vbo + bytes <= valid) { - ; -@@ -1977,6 +1975,9 @@ int ni_fiemap(struct ntfs_inode *ni, struct fiemap_extent_info *fieinfo, - /* vbo < valid && valid < vbo + bytes */ - u64 dlen = valid - vbo; - -+ if (vbo + dlen >= end) -+ flags |= FIEMAP_EXTENT_LAST; -+ - err = fiemap_fill_next_extent(fieinfo, vbo, lbo, dlen, - flags); - if (err < 0) -@@ -1995,6 +1996,9 @@ int ni_fiemap(struct ntfs_inode *ni, struct fiemap_extent_info *fieinfo, - flags |= FIEMAP_EXTENT_UNWRITTEN; - } - -+ if (vbo + bytes >= end) -+ flags |= FIEMAP_EXTENT_LAST; -+ - err = fiemap_fill_next_extent(fieinfo, vbo, lbo, bytes, flags); - if (err < 0) - break; --- -2.25.1 - -From 114346978cf61de02832cc3cc68432a3de70fb38 Mon Sep 17 00:00:00 2001 -From: Konstantin Komarov -Date: Mon, 25 Oct 2021 18:34:06 +0300 -Subject: [PATCH 8/9] fs/ntfs3: Check new size for limits - -We must check size before trying to allocate. -Size can be set for example by "ulimit -f". -Fixes xfstest generic/228 -Fixes: 4342306f0f0d ("fs/ntfs3: Add file operations and implementation") - -Reviewed-by: Kari Argillander -Signed-off-by: Konstantin Komarov ---- - fs/ntfs3/file.c | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) - -diff --git a/fs/ntfs3/file.c b/fs/ntfs3/file.c -index 6242708980d0..f8360f9bfaf0 100644 ---- a/fs/ntfs3/file.c -+++ b/fs/ntfs3/file.c -@@ -661,7 +661,13 @@ static long ntfs_fallocate(struct file *file, int mode, loff_t vbo, loff_t len) - /* - * Normal file: Allocate clusters, do not change 'valid' size. - */ -- err = ntfs_set_size(inode, max(end, i_size)); -+ loff_t new_size = max(end, i_size); -+ -+ err = inode_newsize_ok(inode, new_size); -+ if (err) -+ goto out; -+ -+ err = ntfs_set_size(inode, new_size); - if (err) - goto out; - --- -2.25.1 - -From 52e00ea6b26e45fb8159e3b57cdde8d3f9bdd8e9 Mon Sep 17 00:00:00 2001 -From: Konstantin Komarov -Date: Mon, 25 Oct 2021 18:48:38 +0300 -Subject: [PATCH 9/9] fs/ntfs3: Update valid size if -EIOCBQUEUED - -Update valid size if write is still in I/O queue. -Fixes xfstest generic/240 -Fixes: 82cae269cfa9 ("fs/ntfs3: Add initialization of super block") - -Signed-off-by: Konstantin Komarov ---- - fs/ntfs3/inode.c | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/fs/ntfs3/inode.c b/fs/ntfs3/inode.c -index 859951d785cb..879952254071 100644 ---- a/fs/ntfs3/inode.c -+++ b/fs/ntfs3/inode.c -@@ -757,6 +757,7 @@ static ssize_t ntfs_direct_IO(struct kiocb *iocb, struct iov_iter *iter) - loff_t vbo = iocb->ki_pos; - loff_t end; - int wr = iov_iter_rw(iter) & WRITE; -+ size_t iter_count = iov_iter_count(iter); - loff_t valid; - ssize_t ret; - -@@ -770,10 +771,13 @@ static ssize_t ntfs_direct_IO(struct kiocb *iocb, struct iov_iter *iter) - wr ? ntfs_get_block_direct_IO_W - : ntfs_get_block_direct_IO_R); - -- if (ret <= 0) -+ if (ret > 0) -+ end = vbo + ret; -+ else if (wr && ret == -EIOCBQUEUED) -+ end = vbo + iter_count; -+ else - goto out; - -- end = vbo + ret; - valid = ni->i_valid; - if (wr) { - if (end > valid && !S_ISBLK(inode->i_mode)) { --- -2.25.1 +cgit 1.2.3-1.el7 diff --git a/projects/Allwinner/linux/linux.aarch64.conf b/projects/Allwinner/linux/linux.aarch64.conf index 56afb0ac34..0cd89c1216 100644 --- a/projects/Allwinner/linux/linux.aarch64.conf +++ b/projects/Allwinner/linux/linux.aarch64.conf @@ -885,7 +885,11 @@ CONFIG_XFRM_ESP=y # CONFIG_XDP_SOCKETS is not set CONFIG_INET=y CONFIG_IP_MULTICAST=y -# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_ADVANCED_ROUTER=y +# CONFIG_IP_FIB_TRIE_STATS is not set +CONFIG_IP_MULTIPLE_TABLES=y +# CONFIG_IP_ROUTE_MULTIPATH is not set +# CONFIG_IP_ROUTE_VERBOSE is not set CONFIG_IP_PNP=y CONFIG_IP_PNP_DHCP=y CONFIG_IP_PNP_BOOTP=y @@ -6581,7 +6585,7 @@ CONFIG_CRYPTO_SM3=m CONFIG_CRYPTO_AES=y # CONFIG_CRYPTO_AES_TI is not set # CONFIG_CRYPTO_ANUBIS is not set -CONFIG_CRYPTO_ARC4=m +# CONFIG_CRYPTO_ARC4 is not set # CONFIG_CRYPTO_BLOWFISH is not set # CONFIG_CRYPTO_CAMELLIA is not set # CONFIG_CRYPTO_CAST5 is not set diff --git a/projects/Allwinner/linux/linux.arm.conf b/projects/Allwinner/linux/linux.arm.conf index 24388beb26..35262b1af3 100644 --- a/projects/Allwinner/linux/linux.arm.conf +++ b/projects/Allwinner/linux/linux.arm.conf @@ -852,7 +852,11 @@ CONFIG_XFRM_ESP=m # CONFIG_XDP_SOCKETS is not set CONFIG_INET=y CONFIG_IP_MULTICAST=y -# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_ADVANCED_ROUTER=y +# CONFIG_IP_FIB_TRIE_STATS is not set +CONFIG_IP_MULTIPLE_TABLES=y +# CONFIG_IP_ROUTE_MULTIPATH is not set +# CONFIG_IP_ROUTE_VERBOSE is not set CONFIG_IP_PNP=y CONFIG_IP_PNP_DHCP=y CONFIG_IP_PNP_BOOTP=y @@ -862,6 +866,7 @@ CONFIG_IP_PNP_BOOTP=y CONFIG_NET_IP_TUNNEL=y CONFIG_IP_MROUTE_COMMON=y CONFIG_IP_MROUTE=y +# CONFIG_IP_MROUTE_MULTIPLE_TABLES is not set # CONFIG_IP_PIMSM_V1 is not set # CONFIG_IP_PIMSM_V2 is not set # CONFIG_SYN_COOKIES is not set @@ -6136,7 +6141,7 @@ CONFIG_CRYPTO_SHA512=y CONFIG_CRYPTO_AES=y # CONFIG_CRYPTO_AES_TI is not set # CONFIG_CRYPTO_ANUBIS is not set -CONFIG_CRYPTO_ARC4=m +# CONFIG_CRYPTO_ARC4 is not set # CONFIG_CRYPTO_BLOWFISH is not set # CONFIG_CRYPTO_CAMELLIA is not set # CONFIG_CRYPTO_CAST5 is not set diff --git a/projects/Amlogic/linux/linux.aarch64.conf b/projects/Amlogic/linux/linux.aarch64.conf index 569770e6f8..87675f90f5 100644 --- a/projects/Amlogic/linux/linux.aarch64.conf +++ b/projects/Amlogic/linux/linux.aarch64.conf @@ -6801,7 +6801,7 @@ CONFIG_CRYPTO_SHA512=y CONFIG_CRYPTO_AES=y # CONFIG_CRYPTO_AES_TI is not set # CONFIG_CRYPTO_ANUBIS is not set -CONFIG_CRYPTO_ARC4=y +# CONFIG_CRYPTO_ARC4 is not set # CONFIG_CRYPTO_BLOWFISH is not set # CONFIG_CRYPTO_CAMELLIA is not set # CONFIG_CRYPTO_CAST5 is not set diff --git a/projects/Generic/linux/linux.x86_64.conf b/projects/Generic/linux/linux.x86_64.conf index 949d887a1c..09b791e664 100644 --- a/projects/Generic/linux/linux.x86_64.conf +++ b/projects/Generic/linux/linux.x86_64.conf @@ -6399,7 +6399,7 @@ CONFIG_CRYPTO_AES=y # CONFIG_CRYPTO_AES_TI is not set CONFIG_CRYPTO_AES_NI_INTEL=y # CONFIG_CRYPTO_ANUBIS is not set -CONFIG_CRYPTO_ARC4=m +# CONFIG_CRYPTO_ARC4 is not set # CONFIG_CRYPTO_BLOWFISH is not set # CONFIG_CRYPTO_BLOWFISH_X86_64 is not set # CONFIG_CRYPTO_CAMELLIA is not set diff --git a/projects/NXP/devices/iMX6/linux/linux.arm.conf b/projects/NXP/devices/iMX6/linux/linux.arm.conf index d593b26a49..f59c639f12 100644 --- a/projects/NXP/devices/iMX6/linux/linux.arm.conf +++ b/projects/NXP/devices/iMX6/linux/linux.arm.conf @@ -841,8 +841,12 @@ CONFIG_XFRM=y # CONFIG_NET_KEY is not set # CONFIG_XDP_SOCKETS is not set CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +# CONFIG_IP_FIB_TRIE_STATS is not set +CONFIG_IP_MULTIPLE_TABLES=y +# CONFIG_IP_ROUTE_MULTIPATH is not set +# CONFIG_IP_ROUTE_VERBOSE is not set CONFIG_IP_PNP=y CONFIG_IP_PNP_DHCP=y # CONFIG_IP_PNP_BOOTP is not set @@ -850,6 +854,7 @@ CONFIG_IP_PNP_DHCP=y # CONFIG_NET_IPIP is not set # CONFIG_NET_IPGRE_DEMUX is not set CONFIG_NET_IP_TUNNEL=y +# CONFIG_IP_MROUTE is not set # CONFIG_SYN_COOKIES is not set # CONFIG_NET_IPVTI is not set CONFIG_NET_UDP_TUNNEL=m @@ -1674,6 +1679,7 @@ CONFIG_WIREGUARD=m # CONFIG_GENEVE is not set # CONFIG_BAREUDP is not set # CONFIG_GTP is not set +# CONFIG_AMT is not set # CONFIG_MACSEC is not set # CONFIG_NETCONSOLE is not set # CONFIG_TUN is not set @@ -6550,7 +6556,7 @@ CONFIG_CRYPTO_SHA512=y CONFIG_CRYPTO_AES=y # CONFIG_CRYPTO_AES_TI is not set # CONFIG_CRYPTO_ANUBIS is not set -CONFIG_CRYPTO_ARC4=m +# CONFIG_CRYPTO_ARC4 is not set # CONFIG_CRYPTO_BLOWFISH is not set # CONFIG_CRYPTO_CAMELLIA is not set # CONFIG_CRYPTO_CAST5 is not set diff --git a/projects/NXP/devices/iMX8/linux/linux.aarch64.conf b/projects/NXP/devices/iMX8/linux/linux.aarch64.conf index 2ed2907dd9..e326f13581 100644 --- a/projects/NXP/devices/iMX8/linux/linux.aarch64.conf +++ b/projects/NXP/devices/iMX8/linux/linux.aarch64.conf @@ -924,7 +924,7 @@ CONFIG_INET=y CONFIG_IP_MULTICAST=y CONFIG_IP_ADVANCED_ROUTER=y # CONFIG_IP_FIB_TRIE_STATS is not set -# CONFIG_IP_MULTIPLE_TABLES is not set +CONFIG_IP_MULTIPLE_TABLES=y # CONFIG_IP_ROUTE_MULTIPATH is not set # CONFIG_IP_ROUTE_VERBOSE is not set CONFIG_IP_PNP=y @@ -6796,6 +6796,7 @@ CONFIG_TRACING_SUPPORT=y # CONFIG_FAULT_INJECTION is not set CONFIG_ARCH_HAS_KCOV=y CONFIG_CC_HAS_SANCOV_TRACE_PC=y +# CONFIG_KCOV is not set # CONFIG_RUNTIME_TESTING_MENU is not set CONFIG_ARCH_USE_MEMTEST=y # CONFIG_MEMTEST is not set diff --git a/projects/Qualcomm/devices/Dragonboard/linux/linux.aarch64.conf b/projects/Qualcomm/devices/Dragonboard/linux/linux.aarch64.conf index 7236437652..c44dc2b7ff 100644 --- a/projects/Qualcomm/devices/Dragonboard/linux/linux.aarch64.conf +++ b/projects/Qualcomm/devices/Dragonboard/linux/linux.aarch64.conf @@ -915,7 +915,11 @@ CONFIG_XFRM_USER=y # CONFIG_XDP_SOCKETS is not set CONFIG_INET=y CONFIG_IP_MULTICAST=y -# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_ADVANCED_ROUTER=y +# CONFIG_IP_FIB_TRIE_STATS is not set +CONFIG_IP_MULTIPLE_TABLES=y +# CONFIG_IP_ROUTE_MULTIPATH is not set +# CONFIG_IP_ROUTE_VERBOSE is not set CONFIG_IP_PNP=y CONFIG_IP_PNP_DHCP=y CONFIG_IP_PNP_BOOTP=y @@ -6710,7 +6714,7 @@ CONFIG_CRYPTO_SHA512=y CONFIG_CRYPTO_AES=y # CONFIG_CRYPTO_AES_TI is not set # CONFIG_CRYPTO_ANUBIS is not set -CONFIG_CRYPTO_ARC4=m +# CONFIG_CRYPTO_ARC4 is not set # CONFIG_CRYPTO_BLOWFISH is not set # CONFIG_CRYPTO_CAMELLIA is not set # CONFIG_CRYPTO_CAST5 is not set diff --git a/projects/RPi/devices/RPi/linux/linux.arm.conf b/projects/RPi/devices/RPi/linux/linux.arm.conf index 861a500181..dd19db0dee 100644 --- a/projects/RPi/devices/RPi/linux/linux.arm.conf +++ b/projects/RPi/devices/RPi/linux/linux.arm.conf @@ -5278,7 +5278,7 @@ CONFIG_CRYPTO_SHA512=y CONFIG_CRYPTO_AES=y # CONFIG_CRYPTO_AES_TI is not set # CONFIG_CRYPTO_ANUBIS is not set -CONFIG_CRYPTO_ARC4=y +# CONFIG_CRYPTO_ARC4 is not set # CONFIG_CRYPTO_BLOWFISH is not set # CONFIG_CRYPTO_CAMELLIA is not set # CONFIG_CRYPTO_CAST5 is not set diff --git a/projects/RPi/devices/RPi2/linux/linux.arm.conf b/projects/RPi/devices/RPi2/linux/linux.arm.conf index 3f8a4e8869..9bc93a971d 100644 --- a/projects/RPi/devices/RPi2/linux/linux.arm.conf +++ b/projects/RPi/devices/RPi2/linux/linux.arm.conf @@ -5427,7 +5427,7 @@ CONFIG_CRYPTO_SHA512=y CONFIG_CRYPTO_AES=y # CONFIG_CRYPTO_AES_TI is not set # CONFIG_CRYPTO_ANUBIS is not set -CONFIG_CRYPTO_ARC4=y +# CONFIG_CRYPTO_ARC4 is not set # CONFIG_CRYPTO_BLOWFISH is not set # CONFIG_CRYPTO_CAMELLIA is not set # CONFIG_CRYPTO_CAST5 is not set diff --git a/projects/RPi/devices/RPi4/linux/linux.aarch64.conf b/projects/RPi/devices/RPi4/linux/linux.aarch64.conf index db8484d752..383608e611 100644 --- a/projects/RPi/devices/RPi4/linux/linux.aarch64.conf +++ b/projects/RPi/devices/RPi4/linux/linux.aarch64.conf @@ -6122,7 +6122,7 @@ CONFIG_CRYPTO_SHA512=y CONFIG_CRYPTO_AES=y # CONFIG_CRYPTO_AES_TI is not set # CONFIG_CRYPTO_ANUBIS is not set -CONFIG_CRYPTO_ARC4=y +# CONFIG_CRYPTO_ARC4 is not set # CONFIG_CRYPTO_BLOWFISH is not set # CONFIG_CRYPTO_CAMELLIA is not set # CONFIG_CRYPTO_CAST5 is not set diff --git a/projects/Rockchip/devices/RK3288/linux/default/linux.arm.conf b/projects/Rockchip/devices/RK3288/linux/default/linux.arm.conf index 06ed47e3bc..90b9697811 100644 --- a/projects/Rockchip/devices/RK3288/linux/default/linux.arm.conf +++ b/projects/Rockchip/devices/RK3288/linux/default/linux.arm.conf @@ -862,8 +862,12 @@ CONFIG_XFRM_IPCOMP=m # CONFIG_NET_KEY is not set # CONFIG_XDP_SOCKETS is not set CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +# CONFIG_IP_FIB_TRIE_STATS is not set +CONFIG_IP_MULTIPLE_TABLES=y +# CONFIG_IP_ROUTE_MULTIPATH is not set +# CONFIG_IP_ROUTE_VERBOSE is not set CONFIG_IP_PNP=y CONFIG_IP_PNP_DHCP=y CONFIG_IP_PNP_BOOTP=y @@ -871,6 +875,7 @@ CONFIG_IP_PNP_RARP=y # CONFIG_NET_IPIP is not set # CONFIG_NET_IPGRE_DEMUX is not set CONFIG_NET_IP_TUNNEL=y +# CONFIG_IP_MROUTE is not set # CONFIG_SYN_COOKIES is not set # CONFIG_NET_IPVTI is not set CONFIG_NET_UDP_TUNNEL=m @@ -1448,6 +1453,7 @@ CONFIG_VXLAN=m # CONFIG_GENEVE is not set # CONFIG_BAREUDP is not set # CONFIG_GTP is not set +# CONFIG_AMT is not set # CONFIG_MACSEC is not set # CONFIG_NETCONSOLE is not set CONFIG_TUN=m @@ -6187,7 +6193,7 @@ CONFIG_CRYPTO_SHA512=y CONFIG_CRYPTO_AES=y # CONFIG_CRYPTO_AES_TI is not set # CONFIG_CRYPTO_ANUBIS is not set -CONFIG_CRYPTO_ARC4=m +# CONFIG_CRYPTO_ARC4 is not set # CONFIG_CRYPTO_BLOWFISH is not set # CONFIG_CRYPTO_CAMELLIA is not set # CONFIG_CRYPTO_CAST5 is not set diff --git a/projects/Rockchip/devices/RK3328/linux/default/linux.aarch64.conf b/projects/Rockchip/devices/RK3328/linux/default/linux.aarch64.conf index c680061538..b945f39faa 100644 --- a/projects/Rockchip/devices/RK3328/linux/default/linux.aarch64.conf +++ b/projects/Rockchip/devices/RK3328/linux/default/linux.aarch64.conf @@ -931,7 +931,11 @@ CONFIG_XFRM=y # CONFIG_XDP_SOCKETS is not set CONFIG_INET=y CONFIG_IP_MULTICAST=y -# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_ADVANCED_ROUTER=y +# CONFIG_IP_FIB_TRIE_STATS is not set +CONFIG_IP_MULTIPLE_TABLES=y +# CONFIG_IP_ROUTE_MULTIPATH is not set +# CONFIG_IP_ROUTE_VERBOSE is not set CONFIG_IP_PNP=y CONFIG_IP_PNP_DHCP=y CONFIG_IP_PNP_BOOTP=y @@ -6215,7 +6219,7 @@ CONFIG_CRYPTO_SHA512=y CONFIG_CRYPTO_AES=y # CONFIG_CRYPTO_AES_TI is not set # CONFIG_CRYPTO_ANUBIS is not set -CONFIG_CRYPTO_ARC4=m +# CONFIG_CRYPTO_ARC4 is not set # CONFIG_CRYPTO_BLOWFISH is not set # CONFIG_CRYPTO_CAMELLIA is not set # CONFIG_CRYPTO_CAST5 is not set @@ -6642,6 +6646,7 @@ CONFIG_STRICT_DEVMEM=y # CONFIG_FAULT_INJECTION is not set CONFIG_ARCH_HAS_KCOV=y CONFIG_CC_HAS_SANCOV_TRACE_PC=y +# CONFIG_KCOV is not set # CONFIG_RUNTIME_TESTING_MENU is not set CONFIG_ARCH_USE_MEMTEST=y CONFIG_MEMTEST=y diff --git a/projects/Rockchip/devices/RK3399/linux/default/linux.aarch64.conf b/projects/Rockchip/devices/RK3399/linux/default/linux.aarch64.conf index ab6bc73f72..88264ec6c8 100644 --- a/projects/Rockchip/devices/RK3399/linux/default/linux.aarch64.conf +++ b/projects/Rockchip/devices/RK3399/linux/default/linux.aarch64.conf @@ -932,7 +932,11 @@ CONFIG_XFRM=y # CONFIG_XDP_SOCKETS is not set CONFIG_INET=y CONFIG_IP_MULTICAST=y -# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_ADVANCED_ROUTER=y +# CONFIG_IP_FIB_TRIE_STATS is not set +CONFIG_IP_MULTIPLE_TABLES=y +# CONFIG_IP_ROUTE_MULTIPATH is not set +# CONFIG_IP_ROUTE_VERBOSE is not set CONFIG_IP_PNP=y CONFIG_IP_PNP_DHCP=y CONFIG_IP_PNP_BOOTP=y @@ -6925,7 +6929,7 @@ CONFIG_CRYPTO_SHA512=y CONFIG_CRYPTO_AES=y # CONFIG_CRYPTO_AES_TI is not set # CONFIG_CRYPTO_ANUBIS is not set -CONFIG_CRYPTO_ARC4=m +# CONFIG_CRYPTO_ARC4 is not set # CONFIG_CRYPTO_BLOWFISH is not set # CONFIG_CRYPTO_CAMELLIA is not set # CONFIG_CRYPTO_CAST5 is not set @@ -7355,6 +7359,7 @@ CONFIG_STRICT_DEVMEM=y # CONFIG_FAULT_INJECTION is not set CONFIG_ARCH_HAS_KCOV=y CONFIG_CC_HAS_SANCOV_TRACE_PC=y +# CONFIG_KCOV is not set # CONFIG_RUNTIME_TESTING_MENU is not set CONFIG_ARCH_USE_MEMTEST=y CONFIG_MEMTEST=y diff --git a/projects/Rockchip/patches/linux/default/linux-0011-v4l2-from-list.patch b/projects/Rockchip/patches/linux/default/linux-0011-v4l2-from-list.patch index 1815338b13..8ae520924a 100644 --- a/projects/Rockchip/patches/linux/default/linux-0011-v4l2-from-list.patch +++ b/projects/Rockchip/patches/linux/default/linux-0011-v4l2-from-list.patch @@ -128,39 +128,6 @@ index efd316550807..c88e817cac0a 100644 return 0; } -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Jonas Karlman -Date: Mon, 6 Jul 2020 21:54:35 +0000 -Subject: [PATCH] media: rkvdec: h264: Fix bit depth wrap in pps packet - -The luma and chroma bit depth fields in the pps packet is 3 bits wide. -8 is wrongly added to the bit depth value written to these 3-bit fields. -Because only the 3 LSB is written the hardware is configured correctly. - -Correct this by not adding 8 to the luma and chroma bit depth value. - -Signed-off-by: Jonas Karlman -Reviewed-by: Ezequiel Garcia ---- - drivers/staging/media/rkvdec/rkvdec-h264.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/drivers/staging/media/rkvdec/rkvdec-h264.c b/drivers/staging/media/rkvdec/rkvdec-h264.c -index a379e43147fb..503ae683d0fd 100644 ---- a/drivers/staging/media/rkvdec/rkvdec-h264.c -+++ b/drivers/staging/media/rkvdec/rkvdec-h264.c -@@ -661,8 +661,8 @@ static void assemble_hw_pps(struct rkvdec_ctx *ctx, - WRITE_PPS(0xff, PROFILE_IDC); - WRITE_PPS(1, CONSTRAINT_SET3_FLAG); - WRITE_PPS(sps->chroma_format_idc, CHROMA_FORMAT_IDC); -- WRITE_PPS(sps->bit_depth_luma_minus8 + 8, BIT_DEPTH_LUMA); -- WRITE_PPS(sps->bit_depth_chroma_minus8 + 8, BIT_DEPTH_CHROMA); -+ WRITE_PPS(sps->bit_depth_luma_minus8, BIT_DEPTH_LUMA); -+ WRITE_PPS(sps->bit_depth_chroma_minus8, BIT_DEPTH_CHROMA); - WRITE_PPS(0, QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG); - WRITE_PPS(sps->log2_max_frame_num_minus4, LOG2_MAX_FRAME_NUM_MINUS4); - WRITE_PPS(sps->max_num_ref_frames, MAX_NUM_REF_FRAMES); - From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Mon, 6 Jul 2020 21:54:35 +0000 diff --git a/projects/Rockchip/patches/linux/default/linux-1001-v4l2-rockchip.patch b/projects/Rockchip/patches/linux/default/linux-1001-v4l2-rockchip.patch index a672d31142..858d62224e 100644 --- a/projects/Rockchip/patches/linux/default/linux-1001-v4l2-rockchip.patch +++ b/projects/Rockchip/patches/linux/default/linux-1001-v4l2-rockchip.patch @@ -101,7 +101,7 @@ index c9a551dbd9bc..6ce11b736363 100644 @@ -763,19 +767,7 @@ static void assemble_hw_rps(struct rkvdec_ctx *ctx, for (j = 0; j < RKVDEC_NUM_REFLIST; j++) { for (i = 0; i < h264_ctx->reflists.num_valid; i++) { - u8 dpb_valid = 0; + bool dpb_valid = run->ref_buf_idx[i] >= 0; - u8 idx = 0; - - switch (j) { @@ -143,28 +143,24 @@ index 6ce11b736363..9c3f08c94800 100644 u16 *p = (u16 *)hw_rps; memset(hw_rps, 0, sizeof(priv_tbl->rps)); -@@ -764,18 +764,71 @@ static void assemble_hw_rps(struct rkvdec_ctx *ctx, +@@ -764,16 +764,69 @@ static void assemble_hw_rps(struct rkvdec_ctx *ctx, p[i] = dpb[i].frame_num - max_frame_num; } - for (j = 0; j < RKVDEC_NUM_REFLIST; j++) { - for (i = 0; i < h264_ctx->reflists.num_valid; i++) { -- u8 dpb_valid = 0; +- bool dpb_valid = run->ref_buf_idx[i] >= 0; - u8 idx = reflists[j][i]; + if (!(dec_params->flags & V4L2_H264_DECODE_PARAM_FLAG_FIELD_PIC)) { + for (j = 0; j < RKVDEC_NUM_REFLIST; j++) { + for (i = 0; i < h264_ctx->reflists.num_valid; i++) { -+ u8 dpb_valid = 0; ++ bool dpb_valid = run->ref_buf_idx[i] >= 0; + u8 idx = reflists[j][i]; - if (idx >= ARRAY_SIZE(dec_params->dpb)) - continue; -- dpb_valid = !!(dpb[idx].flags & -- V4L2_H264_DPB_ENTRY_FLAG_ACTIVE); + if (idx >= ARRAY_SIZE(dec_params->dpb)) + continue; -+ dpb_valid = !!(dpb[idx].flags & -+ V4L2_H264_DPB_ENTRY_FLAG_ACTIVE); - set_ps_field(hw_rps, DPB_INFO(i, j), - idx | dpb_valid << 4); @@ -933,37 +929,6 @@ index 908cacb91c6a..d8a812a7d23b 100644 vop: vop@ff370000 { -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Alex Bee -Date: Sun, 3 May 2020 18:34:56 +0200 -Subject: [PATCH] WIP: media/rkvdec: don't overclock IP - -Signed-off-by: Alex Bee ---- - drivers/staging/media/rkvdec/rkvdec.c | 8 +++++--- - 1 file changed, 5 insertions(+), 3 deletions(-) - -diff --git a/drivers/staging/media/rkvdec/rkvdec.c b/drivers/staging/media/rkvdec/rkvdec.c -index 8d2495bee04d..19b31bef0bb3 100644 ---- a/drivers/staging/media/rkvdec/rkvdec.c -+++ b/drivers/staging/media/rkvdec/rkvdec.c -@@ -1130,10 +1130,12 @@ static int rkvdec_probe(struct platform_device *pdev) - return ret; - - /* -- * Bump ACLK to max. possible freq. (500 MHz) to improve performance -- * When 4k video playback. -+ * Don't bump ACLK to max. possible freq. (500 MHz) to improve performance, -+ * since it will lead to non-recoverable decoder lockups in case of decoding -+ * errors, instead put it to 400 MHz, which seems to have no drawbacks -+ * in decoding performance and doesn't result in those hangs. - */ -- clk_set_rate(rkvdec->clocks[0].clk, 500 * 1000 * 1000); -+ clk_set_rate(rkvdec->clocks[0].clk, 400 * 1000 * 1000); - - rkvdec->regs = devm_platform_ioremap_resource(pdev, 0); - if (IS_ERR(rkvdec->regs)) - From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Alex Bee Date: Sat, 21 Aug 2021 16:12:36 +0200 diff --git a/projects/Rockchip/patches/linux/default/linux-2000-v4l2-wip-rkvdec-hevc.patch b/projects/Rockchip/patches/linux/default/linux-2000-v4l2-wip-rkvdec-hevc.patch index aabfdfe4b5..78efb47a18 100644 --- a/projects/Rockchip/patches/linux/default/linux-2000-v4l2-wip-rkvdec-hevc.patch +++ b/projects/Rockchip/patches/linux/default/linux-2000-v4l2-wip-rkvdec-hevc.patch @@ -3337,9 +3337,9 @@ index 62e728777cd4..a5552ccc9460 100644 + + rkvdec->capabilities = variant->capabilities; + - /* - * Don't bump ACLK to max. possible freq. (500 MHz) to improve performance, - * since it will lead to non-recoverable decoder lockups in case of decoding + rkvdec->regs = devm_platform_ioremap_resource(pdev, 0); + if (IS_ERR(rkvdec->regs)) + return PTR_ERR(rkvdec->regs); diff --git a/drivers/staging/media/rkvdec/rkvdec.h b/drivers/staging/media/rkvdec/rkvdec.h index 53719e825c70..d2096ec351e1 100644 --- a/drivers/staging/media/rkvdec/rkvdec.h diff --git a/projects/Samsung/linux/linux.arm.conf b/projects/Samsung/linux/linux.arm.conf index c2efe23e16..04f2e328b7 100644 --- a/projects/Samsung/linux/linux.arm.conf +++ b/projects/Samsung/linux/linux.arm.conf @@ -866,7 +866,11 @@ CONFIG_NET_KEY=y # CONFIG_XDP_SOCKETS is not set CONFIG_INET=y CONFIG_IP_MULTICAST=y -# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_ADVANCED_ROUTER=y +# CONFIG_IP_FIB_TRIE_STATS is not set +CONFIG_IP_MULTIPLE_TABLES=y +# CONFIG_IP_ROUTE_MULTIPATH is not set +# CONFIG_IP_ROUTE_VERBOSE is not set CONFIG_IP_PNP=y CONFIG_IP_PNP_DHCP=y CONFIG_IP_PNP_BOOTP=y