diff --git a/android/GKI_VERSION b/android/GKI_VERSION index 1093b2337244..530a3c769770 100644 --- a/android/GKI_VERSION +++ b/android/GKI_VERSION @@ -1 +1 @@ -LTS_5.4.147_dc8c919ca616 +LTS_5.4.147_e785a25f5262 diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c index 3efd1e5fd9c1..e6ef9fd1f81f 100644 --- a/fs/f2fs/data.c +++ b/fs/f2fs/data.c @@ -3354,7 +3354,13 @@ static int f2fs_write_begin(struct file *file, struct address_space *mapping, block_t blkaddr = NULL_ADDR; int err = 0; - if (trace_android_fs_datawrite_start_enabled()) { + /* + * Should avoid quota operations which can make deadlock: + * kswapd -> f2fs_evict_inode -> dquot_drop -> + * f2fs_dquot_commit -> f2fs_write_begin -> + * d_obtain_alias -> __d_alloc -> kmem_cache_alloc(GFP_KERNEL) + */ + if (trace_android_fs_datawrite_start_enabled() && !IS_NOQUOTA(inode)) { char *path, pathbuf[MAX_TRACE_PATHBUF_LEN]; path = android_fstrace_get_pathname(pathbuf, diff --git a/fs/incfs/vfs.c b/fs/incfs/vfs.c index d7a750290953..b972716f0c25 100644 --- a/fs/incfs/vfs.c +++ b/fs/incfs/vfs.c @@ -777,8 +777,10 @@ static struct dentry *open_or_create_index_dir(struct dentry *backing_dir) err = vfs_mkdir(backing_inode, index_dentry, 0777); inode_unlock(backing_inode); - if (err) + if (err) { + dput(index_dentry); return ERR_PTR(err); + } if (!d_really_is_positive(index_dentry)) { dput(index_dentry); diff --git a/include/linux/android_kabi.h b/include/linux/android_kabi.h index efa52953fe35..9c7b6c035ad3 100644 --- a/include/linux/android_kabi.h +++ b/include/linux/android_kabi.h @@ -63,7 +63,7 @@ _new; \ struct { \ _orig; \ - } __UNIQUE_ID(android_kabi_hide); \ + }; \ __ANDROID_KABI_CHECK_SIZE_ALIGN(_orig, _new); \ } diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index 920582e184dd..666782f1d8b1 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c @@ -758,6 +758,7 @@ static int selinux_set_mnt_opts(struct super_block *sb, if (!strcmp(sb->s_type->name, "debugfs") || !strcmp(sb->s_type->name, "tracefs") || !strcmp(sb->s_type->name, "binder") || + !strcmp(sb->s_type->name, "bpf") || !strcmp(sb->s_type->name, "pstore")) sbsec->flags |= SE_SBGENFS;