aosp/android-mainline: update series (rebase onto v5.10-13264-g3b80dee70eaa)
up to 1e5e020b085d ("Merge 3b80dee70eaa ("Merge tag 'sched-urgent-2020-12-27' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip") into android-mainline")
Signed-off-by: Matthias Maennich <maennich@google.com>
Change-Id: I4726e5a7992e01f00a4adc2f070830040826a59c
diff --git a/android-mainline/ANDROID-Add-vendor-hooks-to-the-scheduler.patch b/android-mainline/ANDROID-Add-vendor-hooks-to-the-scheduler.patch
index 248629a..1e25d6a 100644
--- a/android-mainline/ANDROID-Add-vendor-hooks-to-the-scheduler.patch
+++ b/android-mainline/ANDROID-Add-vendor-hooks-to-the-scheduler.patch
@@ -144,7 +144,7 @@
/*
* If the node that the CPU is on has been offlined, cpu_to_node()
-@@ -4557,6 +4567,8 @@ void scheduler_tick(void)
+@@ -4543,6 +4553,8 @@ void scheduler_tick(void)
rq->idle_balance = idle_cpu(cpu);
trigger_load_balance(rq);
#endif
diff --git a/android-mainline/ANDROID-Incremental-fs-Stress-tool.patch b/android-mainline/ANDROID-Incremental-fs-Stress-tool.patch
index e6fd9c7..a422863 100644
--- a/android-mainline/ANDROID-Incremental-fs-Stress-tool.patch
+++ b/android-mainline/ANDROID-Incremental-fs-Stress-tool.patch
@@ -18,7 +18,7 @@
diff --git a/MAINTAINERS b/MAINTAINERS
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -8728,6 +8728,13 @@ F: Documentation/hwmon/ina2xx.rst
+@@ -8729,6 +8729,13 @@ F: Documentation/hwmon/ina2xx.rst
F: drivers/hwmon/ina2xx.c
F: include/linux/platform_data/ina2xx.h
diff --git a/android-mainline/ANDROID-Sched-Add-restricted-vendor-hooks-for-scheduler.patch b/android-mainline/ANDROID-Sched-Add-restricted-vendor-hooks-for-scheduler.patch
index 8169b85..4fbe47d 100644
--- a/android-mainline/ANDROID-Sched-Add-restricted-vendor-hooks-for-scheduler.patch
+++ b/android-mainline/ANDROID-Sched-Add-restricted-vendor-hooks-for-scheduler.patch
@@ -190,7 +190,7 @@
activate_task(rq, p, ENQUEUE_NOCLOCK);
trace_sched_wakeup_new(p);
-@@ -4267,6 +4277,7 @@ static struct rq *finish_task_switch(struct task_struct *prev)
+@@ -4253,6 +4263,7 @@ static struct rq *finish_task_switch(struct task_struct *prev)
* task and put them back on the free list.
*/
kprobe_flush_task(prev);
@@ -198,7 +198,7 @@
/* Task is done with its stack. */
put_task_stack(prev);
-@@ -4578,6 +4589,7 @@ void scheduler_tick(void)
+@@ -4564,6 +4575,7 @@ void scheduler_tick(void)
rq_lock(rq, &rf);
@@ -206,7 +206,7 @@
update_rq_clock(rq);
thermal_pressure = arch_scale_thermal_pressure(cpu_of(rq));
update_thermal_load_avg(rq_clock_thermal(rq), rq, thermal_pressure);
-@@ -5084,6 +5096,7 @@ static void __sched notrace __schedule(bool preempt)
+@@ -5070,6 +5082,7 @@ static void __sched notrace __schedule(bool preempt)
clear_tsk_need_resched(prev);
clear_preempt_need_resched();
@@ -214,7 +214,7 @@
if (likely(prev != next)) {
rq->nr_switches++;
/*
-@@ -7581,6 +7594,7 @@ int sched_cpu_starting(unsigned int cpu)
+@@ -7571,6 +7584,7 @@ int sched_cpu_starting(unsigned int cpu)
{
sched_rq_cpu_starting(cpu);
sched_tick_start(cpu);
@@ -222,7 +222,7 @@
return 0;
}
-@@ -7632,6 +7646,8 @@ int sched_cpu_dying(unsigned int cpu)
+@@ -7622,6 +7636,8 @@ int sched_cpu_dying(unsigned int cpu)
BUG_ON(rq->nr_running != 1 || rq_has_pinned_tasks(rq));
rq_unlock_irqrestore(rq, &rf);
diff --git a/android-mainline/ANDROID-Sched-Export-scheduler-symbols-needed-by-vendor-modules.patch b/android-mainline/ANDROID-Sched-Export-scheduler-symbols-needed-by-vendor-modules.patch
index fad5601..b426040 100644
--- a/android-mainline/ANDROID-Sched-Export-scheduler-symbols-needed-by-vendor-modules.patch
+++ b/android-mainline/ANDROID-Sched-Export-scheduler-symbols-needed-by-vendor-modules.patch
@@ -88,7 +88,7 @@
/*
* task_rq_lock - lock p->pi_lock and lock the rq @p resides on.
-@@ -7690,7 +7691,9 @@ int in_sched_functions(unsigned long addr)
+@@ -7680,7 +7681,9 @@ int in_sched_functions(unsigned long addr)
* Every task in system belongs to this group at bootup.
*/
struct task_group root_task_group;
diff --git a/android-mainline/ANDROID-arm64-Add-support-for-asymmetric-AArch32-EL0-configurations.patch b/android-mainline/ANDROID-arm64-Add-support-for-asymmetric-AArch32-EL0-configurations.patch
index 647f320..06e1bf8 100644
--- a/android-mainline/ANDROID-arm64-Add-support-for-asymmetric-AArch32-EL0-configurations.patch
+++ b/android-mainline/ANDROID-arm64-Add-support-for-asymmetric-AArch32-EL0-configurations.patch
@@ -49,7 +49,7 @@
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
-@@ -1898,6 +1898,20 @@ config DMI
+@@ -1899,6 +1899,20 @@ config DMI
endmenu
diff --git a/android-mainline/ANDROID-arm64-Disallow-offlining-the-last-aarch32-cpu.patch b/android-mainline/ANDROID-arm64-Disallow-offlining-the-last-aarch32-cpu.patch
index 48bcfec..1d86b2c 100644
--- a/android-mainline/ANDROID-arm64-Disallow-offlining-the-last-aarch32-cpu.patch
+++ b/android-mainline/ANDROID-arm64-Disallow-offlining-the-last-aarch32-cpu.patch
@@ -28,7 +28,7 @@
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
-@@ -1906,8 +1906,10 @@ config ASYMMETRIC_AARCH32
+@@ -1907,8 +1907,10 @@ config ASYMMETRIC_AARCH32
CPU configurations. Once the AArch32 EL0 support is detected
on a CPU, the feature is made available to user space to allow
the execution of 32-bit (compat) applications by migrating
diff --git a/android-mainline/ANDROID-arm64-Enable-KVM-for-Asym-AArch32.patch b/android-mainline/ANDROID-arm64-Enable-KVM-for-Asym-AArch32.patch
index 94919dc..742ec66 100644
--- a/android-mainline/ANDROID-arm64-Enable-KVM-for-Asym-AArch32.patch
+++ b/android-mainline/ANDROID-arm64-Enable-KVM-for-Asym-AArch32.patch
@@ -17,7 +17,7 @@
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
-@@ -1900,7 +1900,7 @@ endmenu
+@@ -1901,7 +1901,7 @@ endmenu
config ASYMMETRIC_AARCH32
bool "Allow support for asymmetric AArch32 support"
diff --git a/android-mainline/ANDROID-arm64-Handle-AArch32-tasks-running-on-non-AArch32-cpu.patch b/android-mainline/ANDROID-arm64-Handle-AArch32-tasks-running-on-non-AArch32-cpu.patch
index ad5faf4..022ffe2 100644
--- a/android-mainline/ANDROID-arm64-Handle-AArch32-tasks-running-on-non-AArch32-cpu.patch
+++ b/android-mainline/ANDROID-arm64-Handle-AArch32-tasks-running-on-non-AArch32-cpu.patch
@@ -34,7 +34,7 @@
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
-@@ -1905,10 +1905,9 @@ config ASYMMETRIC_AARCH32
+@@ -1906,10 +1906,9 @@ config ASYMMETRIC_AARCH32
Enable this option to allow support for asymmetric AArch32 EL0
CPU configurations. Once the AArch32 EL0 support is detected
on a CPU, the feature is made available to user space to allow
diff --git a/android-mainline/ANDROID-dma-heap-Rework-allocation-calls-to-return-struct-dma_buf-instead-of-fd.patch b/android-mainline/ANDROID-dma-heap-Rework-allocation-calls-to-return-struct-dma_buf-instead-of-fd.patch
index cf82d6c..48ef527 100644
--- a/android-mainline/ANDROID-dma-heap-Rework-allocation-calls-to-return-struct-dma_buf-instead-of-fd.patch
+++ b/android-mainline/ANDROID-dma-heap-Rework-allocation-calls-to-return-struct-dma_buf-instead-of-fd.patch
@@ -98,7 +98,7 @@
diff --git a/drivers/dma-buf/heaps/cma_heap.c b/drivers/dma-buf/heaps/cma_heap.c
--- a/drivers/dma-buf/heaps/cma_heap.c
+++ b/drivers/dma-buf/heaps/cma_heap.c
-@@ -267,10 +267,10 @@ static const struct dma_buf_ops cma_heap_buf_ops = {
+@@ -268,10 +268,10 @@ static const struct dma_buf_ops cma_heap_buf_ops = {
.release = cma_heap_dma_buf_release,
};
@@ -113,7 +113,7 @@
{
struct cma_heap *cma_heap = dma_heap_get_drvdata(heap);
struct cma_heap_buffer *buffer;
-@@ -285,7 +285,7 @@ static int cma_heap_allocate(struct dma_heap *heap,
+@@ -286,7 +286,7 @@ static int cma_heap_allocate(struct dma_heap *heap,
buffer = kzalloc(sizeof(*buffer), GFP_KERNEL);
if (!buffer)
@@ -122,7 +122,7 @@
INIT_LIST_HEAD(&buffer->attachments);
mutex_init(&buffer->lock);
-@@ -345,14 +345,7 @@ static int cma_heap_allocate(struct dma_heap *heap,
+@@ -346,14 +346,7 @@ static int cma_heap_allocate(struct dma_heap *heap,
goto free_pages;
}
@@ -138,7 +138,7 @@
free_pages:
kfree(buffer->pages);
-@@ -361,7 +354,7 @@ static int cma_heap_allocate(struct dma_heap *heap,
+@@ -362,7 +355,7 @@ static int cma_heap_allocate(struct dma_heap *heap,
free_buffer:
kfree(buffer);
diff --git a/android-mainline/ANDROID-ext4-Handle-casefolding-with-encryption.patch b/android-mainline/ANDROID-ext4-Handle-casefolding-with-encryption.patch
index 0275018..baf32e8 100644
--- a/android-mainline/ANDROID-ext4-Handle-casefolding-with-encryption.patch
+++ b/android-mainline/ANDROID-ext4-Handle-casefolding-with-encryption.patch
@@ -202,7 +202,7 @@
diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
--- a/fs/ext4/ext4.h
+++ b/fs/ext4/ext4.h
-@@ -2165,6 +2165,17 @@ struct ext4_dir_entry {
+@@ -2195,6 +2195,17 @@ struct ext4_dir_entry {
char name[EXT4_NAME_LEN]; /* File name */
};
@@ -220,7 +220,7 @@
/*
* The new version of the directory entry. Since EXT4 structures are
* stored in intel byte order, and the name_len field could never be
-@@ -2179,6 +2190,22 @@ struct ext4_dir_entry_2 {
+@@ -2209,6 +2220,22 @@ struct ext4_dir_entry_2 {
char name[EXT4_NAME_LEN]; /* File name */
};
@@ -243,7 +243,7 @@
/*
* This is a bogus directory entry at the end of each leaf block that
* records checksums.
-@@ -2220,10 +2247,24 @@ struct ext4_dir_entry_tail {
+@@ -2250,10 +2277,24 @@ struct ext4_dir_entry_tail {
*/
#define EXT4_DIR_PAD 4
#define EXT4_DIR_ROUND (EXT4_DIR_PAD - 1)
@@ -270,7 +270,7 @@
/*
* If we ever get support for fs block sizes > page_size, we'll need
* to remove the #if statements in the next two functions...
-@@ -2280,6 +2321,7 @@ static inline __le16 ext4_rec_len_to_disk(unsigned len, unsigned blocksize)
+@@ -2310,6 +2351,7 @@ static inline __le16 ext4_rec_len_to_disk(unsigned len, unsigned blocksize)
#define DX_HASH_LEGACY_UNSIGNED 3
#define DX_HASH_HALF_MD4_UNSIGNED 4
#define DX_HASH_TEA_UNSIGNED 5
@@ -278,7 +278,7 @@
static inline u32 ext4_chksum(struct ext4_sb_info *sbi, u32 crc,
const void *address, unsigned int length)
-@@ -2334,6 +2376,7 @@ struct ext4_filename {
+@@ -2364,6 +2406,7 @@ struct ext4_filename {
};
#define fname_name(p) ((p)->disk_name.name)
@@ -286,7 +286,7 @@
#define fname_len(p) ((p)->disk_name.len)
/*
-@@ -2675,21 +2718,22 @@ extern int __ext4_check_dir_entry(const char *, unsigned int, struct inode *,
+@@ -2705,21 +2748,22 @@ extern int __ext4_check_dir_entry(const char *, unsigned int, struct inode *,
struct file *,
struct ext4_dir_entry_2 *,
struct buffer_head *, char *, int,
@@ -313,7 +313,7 @@
struct ext4_dir_entry_2 *de,
int buf_size,
struct ext4_filename *fname);
-@@ -2911,10 +2955,11 @@ extern int ext4_search_dir(struct buffer_head *bh,
+@@ -2941,10 +2985,11 @@ extern int ext4_search_dir(struct buffer_head *bh,
int buf_size,
struct inode *dir,
struct ext4_filename *fname,
@@ -326,7 +326,7 @@
struct buffer_head *bh,
void *entry_buf,
int buf_size,
-@@ -3472,9 +3517,6 @@ extern void ext4_initialize_dirent_tail(struct buffer_head *bh,
+@@ -3512,9 +3557,6 @@ extern void ext4_initialize_dirent_tail(struct buffer_head *bh,
unsigned int blocksize);
extern int ext4_handle_dirty_dirblock(handle_t *handle, struct inode *inode,
struct buffer_head *bh);
@@ -561,7 +561,7 @@
diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c
--- a/fs/ext4/namei.c
+++ b/fs/ext4/namei.c
-@@ -284,9 +284,11 @@ static int dx_make_map(struct inode *dir, struct ext4_dir_entry_2 *de,
+@@ -280,9 +280,11 @@ static int dx_make_map(struct inode *dir, struct ext4_dir_entry_2 *de,
unsigned blocksize, struct dx_hash_info *hinfo,
struct dx_map_entry map[]);
static void dx_sort_map(struct dx_map_entry *map, unsigned count);
@@ -576,7 +576,7 @@
static void dx_insert_block(struct dx_frame *frame,
u32 hash, ext4_lblk_t block);
static int ext4_htree_next_block(struct inode *dir, __u32 hash,
-@@ -295,7 +297,7 @@ static int ext4_htree_next_block(struct inode *dir, __u32 hash,
+@@ -291,7 +293,7 @@ static int ext4_htree_next_block(struct inode *dir, __u32 hash,
__u32 *start_hash);
static struct buffer_head * ext4_dx_find_entry(struct inode *dir,
struct ext4_filename *fname,
@@ -585,7 +585,7 @@
static int ext4_dx_add_entry(handle_t *handle, struct ext4_filename *fname,
struct inode *dir, struct inode *inode);
-@@ -578,8 +580,9 @@ static inline void dx_set_limit(struct dx_entry *entries, unsigned value)
+@@ -574,8 +576,9 @@ static inline void dx_set_limit(struct dx_entry *entries, unsigned value)
static inline unsigned dx_root_limit(struct inode *dir, unsigned infosize)
{
@@ -597,7 +597,7 @@
if (ext4_has_metadata_csum(dir->i_sb))
entry_space -= sizeof(struct dx_tail);
-@@ -588,7 +591,8 @@ static inline unsigned dx_root_limit(struct inode *dir, unsigned infosize)
+@@ -584,7 +587,8 @@ static inline unsigned dx_root_limit(struct inode *dir, unsigned infosize)
static inline unsigned dx_node_limit(struct inode *dir)
{
@@ -607,7 +607,7 @@
if (ext4_has_metadata_csum(dir->i_sb))
entry_space -= sizeof(struct dx_tail);
-@@ -677,7 +681,10 @@ static struct stats dx_show_leaf(struct inode *dir,
+@@ -673,7 +677,10 @@ static struct stats dx_show_leaf(struct inode *dir,
name = fname_crypto_str.name;
len = fname_crypto_str.len;
}
@@ -619,7 +619,7 @@
de->name_len, &h);
printk("%*.s:(E)%x.%u ", len, name,
h.hash, (unsigned) ((char *) de
-@@ -693,7 +700,7 @@ static struct stats dx_show_leaf(struct inode *dir,
+@@ -689,7 +696,7 @@ static struct stats dx_show_leaf(struct inode *dir,
(unsigned) ((char *) de - base));
#endif
}
@@ -628,7 +628,7 @@
names++;
}
de = ext4_next_entry(de, size);
-@@ -765,11 +772,25 @@ dx_probe(struct ext4_filename *fname, struct inode *dir,
+@@ -761,11 +768,25 @@ dx_probe(struct ext4_filename *fname, struct inode *dir,
root = (struct dx_root *) frame->bh->b_data;
if (root->info.hash_version != DX_HASH_TEA &&
root->info.hash_version != DX_HASH_HALF_MD4 &&
@@ -655,7 +655,7 @@
if (fname)
hinfo = &fname->hinfo;
hinfo->hash_version = root->info.hash_version;
-@@ -991,6 +1012,7 @@ static int htree_dirblock_to_tree(struct file *dir_file,
+@@ -987,6 +1008,7 @@ static int htree_dirblock_to_tree(struct file *dir_file,
struct ext4_dir_entry_2 *de, *top;
int err = 0, count = 0;
struct fscrypt_str fname_crypto_str = FSTR_INIT(NULL, 0), tmp_str;
@@ -663,7 +663,7 @@
dxtrace(printk(KERN_INFO "In htree dirblock_to_tree: block %lu\n",
(unsigned long)block));
-@@ -999,9 +1021,11 @@ static int htree_dirblock_to_tree(struct file *dir_file,
+@@ -995,9 +1017,11 @@ static int htree_dirblock_to_tree(struct file *dir_file,
return PTR_ERR(bh);
de = (struct ext4_dir_entry_2 *) bh->b_data;
@@ -676,7 +676,7 @@
/* Check if the directory is encrypted */
if (IS_ENCRYPTED(dir)) {
err = fscrypt_prepare_readdir(dir);
-@@ -1019,13 +1043,23 @@ static int htree_dirblock_to_tree(struct file *dir_file,
+@@ -1015,13 +1039,23 @@ static int htree_dirblock_to_tree(struct file *dir_file,
for (; de < top; de = ext4_next_entry(de, dir->i_sb->s_blocksize)) {
if (ext4_check_dir_entry(dir, NULL, de, bh,
@@ -702,7 +702,7 @@
if ((hinfo->hash < start_hash) ||
((hinfo->hash == start_hash) &&
(hinfo->minor_hash < start_minor_hash)))
-@@ -1094,7 +1128,11 @@ int ext4_htree_fill_tree(struct file *dir_file, __u32 start_hash,
+@@ -1090,7 +1124,11 @@ int ext4_htree_fill_tree(struct file *dir_file, __u32 start_hash,
start_hash, start_minor_hash));
dir = file_inode(dir_file);
if (!(ext4_test_inode_flag(dir, EXT4_INODE_INDEX))) {
@@ -715,7 +715,7 @@
if (hinfo.hash_version <= DX_HASH_TEA)
hinfo.hash_version +=
EXT4_SB(dir->i_sb)->s_hash_unsigned;
-@@ -1187,11 +1225,12 @@ int ext4_htree_fill_tree(struct file *dir_file, __u32 start_hash,
+@@ -1183,11 +1221,12 @@ int ext4_htree_fill_tree(struct file *dir_file, __u32 start_hash,
static inline int search_dirblock(struct buffer_head *bh,
struct inode *dir,
struct ext4_filename *fname,
@@ -729,7 +729,7 @@
}
/*
-@@ -1212,7 +1251,10 @@ static int dx_make_map(struct inode *dir, struct ext4_dir_entry_2 *de,
+@@ -1208,7 +1247,10 @@ static int dx_make_map(struct inode *dir, struct ext4_dir_entry_2 *de,
while ((char *) de < base + blocksize) {
if (de->name_len && de->inode) {
@@ -741,7 +741,7 @@
map_tail--;
map_tail->hash = h.hash;
map_tail->offs = ((char *) de - base)>>2;
-@@ -1276,31 +1318,47 @@ static void dx_insert_block(struct dx_frame *frame, u32 hash, ext4_lblk_t block)
+@@ -1272,31 +1314,47 @@ static void dx_insert_block(struct dx_frame *frame, u32 hash, ext4_lblk_t block)
* Returns: 0 if the directory entry matches, more than 0 if it
* doesn't match or less than zero on error.
*/
@@ -801,7 +801,7 @@
return ret;
}
-@@ -1309,7 +1367,8 @@ void ext4_fname_setup_ci_filename(struct inode *dir, const struct qstr *iname,
+@@ -1305,7 +1363,8 @@ void ext4_fname_setup_ci_filename(struct inode *dir, const struct qstr *iname,
{
int len;
@@ -811,7 +811,7 @@
cf_name->name = NULL;
return;
}
-@@ -1336,14 +1395,11 @@ void ext4_fname_setup_ci_filename(struct inode *dir, const struct qstr *iname,
+@@ -1332,14 +1391,11 @@ void ext4_fname_setup_ci_filename(struct inode *dir, const struct qstr *iname,
*
* Return: %true if the directory entry matches, otherwise %false.
*/
@@ -828,7 +828,7 @@
if (!de->inode)
return false;
-@@ -1355,14 +1411,28 @@ static inline bool ext4_match(const struct inode *parent,
+@@ -1351,14 +1407,28 @@ static inline bool ext4_match(const struct inode *parent,
#endif
#ifdef CONFIG_UNICODE
@@ -861,7 +861,7 @@
}
#endif
-@@ -1374,7 +1444,8 @@ static inline bool ext4_match(const struct inode *parent,
+@@ -1370,7 +1440,8 @@ static inline bool ext4_match(const struct inode *parent,
*/
int ext4_search_dir(struct buffer_head *bh, char *search_buf, int buf_size,
struct inode *dir, struct ext4_filename *fname,
@@ -871,7 +871,7 @@
{
struct ext4_dir_entry_2 * de;
char * dlimit;
-@@ -1390,7 +1461,7 @@ int ext4_search_dir(struct buffer_head *bh, char *search_buf, int buf_size,
+@@ -1386,7 +1457,7 @@ int ext4_search_dir(struct buffer_head *bh, char *search_buf, int buf_size,
/* found a match - just to be sure, do
* a full check */
if (ext4_check_dir_entry(dir, NULL, de, bh, search_buf,
@@ -880,7 +880,7 @@
return -1;
*res_dir = de;
return 1;
-@@ -1436,7 +1507,7 @@ static int is_dx_internal_node(struct inode *dir, ext4_lblk_t block,
+@@ -1432,7 +1503,7 @@ static int is_dx_internal_node(struct inode *dir, ext4_lblk_t block,
static struct buffer_head *__ext4_find_entry(struct inode *dir,
struct ext4_filename *fname,
struct ext4_dir_entry_2 **res_dir,
@@ -889,7 +889,7 @@
{
struct super_block *sb;
struct buffer_head *bh_use[NAMEI_RA_SIZE];
-@@ -1460,6 +1531,8 @@ static struct buffer_head *__ext4_find_entry(struct inode *dir,
+@@ -1456,6 +1527,8 @@ static struct buffer_head *__ext4_find_entry(struct inode *dir,
int has_inline_data = 1;
ret = ext4_find_inline_entry(dir, fname, res_dir,
&has_inline_data);
@@ -898,7 +898,7 @@
if (has_inline_data) {
if (inlined)
*inlined = 1;
-@@ -1478,7 +1551,7 @@ static struct buffer_head *__ext4_find_entry(struct inode *dir,
+@@ -1474,7 +1547,7 @@ static struct buffer_head *__ext4_find_entry(struct inode *dir,
goto restart;
}
if (is_dx(dir)) {
@@ -907,7 +907,7 @@
/*
* On success, or if the error was file not found,
* return. Otherwise, fall back to doing a search the
-@@ -1544,9 +1617,11 @@ static struct buffer_head *__ext4_find_entry(struct inode *dir,
+@@ -1540,9 +1613,11 @@ static struct buffer_head *__ext4_find_entry(struct inode *dir,
goto cleanup_and_exit;
}
set_buffer_verified(bh);
@@ -920,7 +920,7 @@
EXT4_I(dir)->i_dir_start_lookup = block;
ret = bh;
goto cleanup_and_exit;
-@@ -1581,7 +1656,7 @@ static struct buffer_head *__ext4_find_entry(struct inode *dir,
+@@ -1577,7 +1652,7 @@ static struct buffer_head *__ext4_find_entry(struct inode *dir,
static struct buffer_head *ext4_find_entry(struct inode *dir,
const struct qstr *d_name,
struct ext4_dir_entry_2 **res_dir,
@@ -929,7 +929,7 @@
{
int err;
struct ext4_filename fname;
-@@ -1593,7 +1668,7 @@ static struct buffer_head *ext4_find_entry(struct inode *dir,
+@@ -1589,7 +1664,7 @@ static struct buffer_head *ext4_find_entry(struct inode *dir,
if (err)
return ERR_PTR(err);
@@ -938,7 +938,7 @@
ext4_fname_free_filename(&fname);
return bh;
-@@ -1614,7 +1689,7 @@ static struct buffer_head *ext4_lookup_entry(struct inode *dir,
+@@ -1610,7 +1685,7 @@ static struct buffer_head *ext4_lookup_entry(struct inode *dir,
if (err)
return ERR_PTR(err);
@@ -947,7 +947,7 @@
ext4_fname_free_filename(&fname);
return bh;
-@@ -1622,7 +1697,7 @@ static struct buffer_head *ext4_lookup_entry(struct inode *dir,
+@@ -1618,7 +1693,7 @@ static struct buffer_head *ext4_lookup_entry(struct inode *dir,
static struct buffer_head * ext4_dx_find_entry(struct inode *dir,
struct ext4_filename *fname,
@@ -956,7 +956,7 @@
{
struct super_block * sb = dir->i_sb;
struct dx_frame frames[EXT4_HTREE_LEVEL], *frame;
-@@ -1638,11 +1713,13 @@ static struct buffer_head * ext4_dx_find_entry(struct inode *dir,
+@@ -1634,11 +1709,13 @@ static struct buffer_head * ext4_dx_find_entry(struct inode *dir,
return (struct buffer_head *) frame;
do {
block = dx_get_block(frame->at);
@@ -971,7 +971,7 @@
block << EXT4_BLOCK_SIZE_BITS(sb),
res_dir);
if (retval == 1)
-@@ -1737,7 +1814,7 @@ struct dentry *ext4_get_parent(struct dentry *child)
+@@ -1733,7 +1810,7 @@ struct dentry *ext4_get_parent(struct dentry *child)
struct ext4_dir_entry_2 * de;
struct buffer_head *bh;
@@ -980,7 +980,7 @@
if (IS_ERR(bh))
return ERR_CAST(bh);
if (!bh)
-@@ -1759,7 +1836,8 @@ struct dentry *ext4_get_parent(struct dentry *child)
+@@ -1755,7 +1832,8 @@ struct dentry *ext4_get_parent(struct dentry *child)
* Returns pointer to last entry moved.
*/
static struct ext4_dir_entry_2 *
@@ -990,7 +990,7 @@
unsigned blocksize)
{
unsigned rec_len = 0;
-@@ -1767,7 +1845,8 @@ dx_move_dirents(char *from, char *to, struct dx_map_entry *map, int count,
+@@ -1763,7 +1841,8 @@ dx_move_dirents(char *from, char *to, struct dx_map_entry *map, int count,
while (count--) {
struct ext4_dir_entry_2 *de = (struct ext4_dir_entry_2 *)
(from + (map->offs<<2));
@@ -1000,7 +1000,7 @@
memcpy (to, de, rec_len);
((struct ext4_dir_entry_2 *) to)->rec_len =
ext4_rec_len_to_disk(rec_len, blocksize);
-@@ -1782,7 +1861,8 @@ dx_move_dirents(char *from, char *to, struct dx_map_entry *map, int count,
+@@ -1778,7 +1857,8 @@ dx_move_dirents(char *from, char *to, struct dx_map_entry *map, int count,
* Compact each dir entry in the range to the minimal rec_len.
* Returns pointer to last entry in range.
*/
@@ -1010,7 +1010,7 @@
{
struct ext4_dir_entry_2 *next, *to, *prev, *de = (struct ext4_dir_entry_2 *) base;
unsigned rec_len = 0;
-@@ -1791,7 +1871,7 @@ static struct ext4_dir_entry_2* dx_pack_dirents(char *base, unsigned blocksize)
+@@ -1787,7 +1867,7 @@ static struct ext4_dir_entry_2* dx_pack_dirents(char *base, unsigned blocksize)
while ((char*)de < base + blocksize) {
next = ext4_next_entry(de, blocksize);
if (de->inode && de->name_len) {
@@ -1019,7 +1019,7 @@
if (de > to)
memmove(to, de, rec_len);
to->rec_len = ext4_rec_len_to_disk(rec_len, blocksize);
-@@ -1809,13 +1889,12 @@ static struct ext4_dir_entry_2* dx_pack_dirents(char *base, unsigned blocksize)
+@@ -1805,13 +1885,12 @@ static struct ext4_dir_entry_2* dx_pack_dirents(char *base, unsigned blocksize)
* Returns pointer to de in block into which the new entry will be inserted.
*/
static struct ext4_dir_entry_2 *do_split(handle_t *handle, struct inode *dir,
@@ -1035,7 +1035,7 @@
u32 hash2;
struct dx_map_entry *map;
char *data1 = (*bh)->b_data, *data2;
-@@ -1827,7 +1906,7 @@ static struct ext4_dir_entry_2 *do_split(handle_t *handle, struct inode *dir,
+@@ -1823,7 +1902,7 @@ static struct ext4_dir_entry_2 *do_split(handle_t *handle, struct inode *dir,
if (ext4_has_metadata_csum(dir->i_sb))
csum_size = sizeof(struct ext4_dir_entry_tail);
@@ -1044,7 +1044,7 @@
if (IS_ERR(bh2)) {
brelse(*bh);
*bh = NULL;
-@@ -1881,9 +1960,9 @@ static struct ext4_dir_entry_2 *do_split(handle_t *handle, struct inode *dir,
+@@ -1877,9 +1956,9 @@ static struct ext4_dir_entry_2 *do_split(handle_t *handle, struct inode *dir,
hash2, split, count-split));
/* Fancy dance to stay within two buffers */
@@ -1056,7 +1056,7 @@
de->rec_len = ext4_rec_len_to_disk(data1 + (blocksize - csum_size) -
(char *) de,
blocksize);
-@@ -1905,7 +1984,7 @@ static struct ext4_dir_entry_2 *do_split(handle_t *handle, struct inode *dir,
+@@ -1901,7 +1980,7 @@ static struct ext4_dir_entry_2 *do_split(handle_t *handle, struct inode *dir,
swap(*bh, bh2);
de = de2;
}
@@ -1065,7 +1065,7 @@
err = ext4_handle_dirty_dirblock(handle, dir, bh2);
if (err)
goto journal_error;
-@@ -1925,13 +2004,14 @@ static struct ext4_dir_entry_2 *do_split(handle_t *handle, struct inode *dir,
+@@ -1921,13 +2000,14 @@ static struct ext4_dir_entry_2 *do_split(handle_t *handle, struct inode *dir,
}
int ext4_find_dest_de(struct inode *dir, struct inode *inode,
@@ -1081,7 +1081,7 @@
int nlen, rlen;
unsigned int offset = 0;
char *top;
-@@ -1940,11 +2020,11 @@ int ext4_find_dest_de(struct inode *dir, struct inode *inode,
+@@ -1936,11 +2016,11 @@ int ext4_find_dest_de(struct inode *dir, struct inode *inode,
top = buf + buf_size - reclen;
while ((char *) de <= top) {
if (ext4_check_dir_entry(dir, NULL, de, bh,
@@ -1095,7 +1095,7 @@
rlen = ext4_rec_len_from_disk(de->rec_len, buf_size);
if ((de->inode ? rlen - nlen : rlen) >= reclen)
break;
-@@ -1958,7 +2038,8 @@ int ext4_find_dest_de(struct inode *dir, struct inode *inode,
+@@ -1954,7 +2034,8 @@ int ext4_find_dest_de(struct inode *dir, struct inode *inode,
return 0;
}
@@ -1105,7 +1105,7 @@
struct ext4_dir_entry_2 *de,
int buf_size,
struct ext4_filename *fname)
-@@ -1966,7 +2047,7 @@ void ext4_insert_dentry(struct inode *inode,
+@@ -1962,7 +2043,7 @@ void ext4_insert_dentry(struct inode *inode,
int nlen, rlen;
@@ -1114,7 +1114,7 @@
rlen = ext4_rec_len_from_disk(de->rec_len, buf_size);
if (de->inode) {
struct ext4_dir_entry_2 *de1 =
-@@ -1980,6 +2061,17 @@ void ext4_insert_dentry(struct inode *inode,
+@@ -1976,6 +2057,17 @@ void ext4_insert_dentry(struct inode *inode,
ext4_set_de_type(inode->i_sb, de, inode->i_mode);
de->name_len = fname_len(fname);
memcpy(de->name, fname_name(fname), fname_len(fname));
@@ -1132,7 +1132,7 @@
}
/*
-@@ -1993,6 +2085,7 @@ void ext4_insert_dentry(struct inode *inode,
+@@ -1989,6 +2081,7 @@ void ext4_insert_dentry(struct inode *inode,
static int add_dirent_to_buf(handle_t *handle, struct ext4_filename *fname,
struct inode *dir,
struct inode *inode, struct ext4_dir_entry_2 *de,
@@ -1140,7 +1140,7 @@
struct buffer_head *bh)
{
unsigned int blocksize = dir->i_sb->s_blocksize;
-@@ -2003,7 +2096,7 @@ static int add_dirent_to_buf(handle_t *handle, struct ext4_filename *fname,
+@@ -1999,7 +2092,7 @@ static int add_dirent_to_buf(handle_t *handle, struct ext4_filename *fname,
csum_size = sizeof(struct ext4_dir_entry_tail);
if (!de) {
@@ -1149,7 +1149,7 @@
blocksize - csum_size, fname, &de);
if (err)
return err;
-@@ -2016,7 +2109,7 @@ static int add_dirent_to_buf(handle_t *handle, struct ext4_filename *fname,
+@@ -2012,7 +2105,7 @@ static int add_dirent_to_buf(handle_t *handle, struct ext4_filename *fname,
}
/* By now the buffer is marked for journaling */
@@ -1158,7 +1158,7 @@
/*
* XXX shouldn't update any times until successful
-@@ -2108,11 +2201,16 @@ static int make_indexed_dir(handle_t *handle, struct ext4_filename *fname,
+@@ -2104,11 +2197,16 @@ static int make_indexed_dir(handle_t *handle, struct ext4_filename *fname,
/* Initialize the root; the dot dirents already exist */
de = (struct ext4_dir_entry_2 *) (&root->dotdot);
@@ -1178,7 +1178,7 @@
entries = root->entries;
dx_set_block(entries, 1);
dx_set_count(entries, 1);
-@@ -2123,7 +2221,12 @@ static int make_indexed_dir(handle_t *handle, struct ext4_filename *fname,
+@@ -2119,7 +2217,12 @@ static int make_indexed_dir(handle_t *handle, struct ext4_filename *fname,
if (fname->hinfo.hash_version <= DX_HASH_TEA)
fname->hinfo.hash_version += EXT4_SB(dir->i_sb)->s_hash_unsigned;
fname->hinfo.seed = EXT4_SB(dir->i_sb)->s_hash_seed;
@@ -1192,7 +1192,7 @@
memset(frames, 0, sizeof(frames));
frame = frames;
-@@ -2138,13 +2241,13 @@ static int make_indexed_dir(handle_t *handle, struct ext4_filename *fname,
+@@ -2134,13 +2237,13 @@ static int make_indexed_dir(handle_t *handle, struct ext4_filename *fname,
if (retval)
goto out_frames;
@@ -1208,7 +1208,7 @@
out_frames:
/*
* Even if the block split failed, we have to properly write
-@@ -2244,7 +2347,7 @@ static int ext4_add_entry(handle_t *handle, struct dentry *dentry,
+@@ -2240,7 +2343,7 @@ static int ext4_add_entry(handle_t *handle, struct dentry *dentry,
goto out;
}
retval = add_dirent_to_buf(handle, &fname, dir, inode,
@@ -1217,7 +1217,7 @@
if (retval != -ENOSPC)
goto out;
-@@ -2271,7 +2374,7 @@ static int ext4_add_entry(handle_t *handle, struct dentry *dentry,
+@@ -2267,7 +2370,7 @@ static int ext4_add_entry(handle_t *handle, struct dentry *dentry,
if (csum_size)
ext4_initialize_dirent_tail(bh, blocksize);
@@ -1226,7 +1226,7 @@
out:
ext4_fname_free_filename(&fname);
brelse(bh);
-@@ -2293,6 +2396,7 @@ static int ext4_dx_add_entry(handle_t *handle, struct ext4_filename *fname,
+@@ -2289,6 +2392,7 @@ static int ext4_dx_add_entry(handle_t *handle, struct ext4_filename *fname,
struct ext4_dir_entry_2 *de;
int restart;
int err;
@@ -1234,7 +1234,7 @@
again:
restart = 0;
-@@ -2301,7 +2405,8 @@ static int ext4_dx_add_entry(handle_t *handle, struct ext4_filename *fname,
+@@ -2297,7 +2401,8 @@ static int ext4_dx_add_entry(handle_t *handle, struct ext4_filename *fname,
return PTR_ERR(frame);
entries = frame->entries;
at = frame->at;
@@ -1244,7 +1244,7 @@
if (IS_ERR(bh)) {
err = PTR_ERR(bh);
bh = NULL;
-@@ -2313,7 +2418,7 @@ static int ext4_dx_add_entry(handle_t *handle, struct ext4_filename *fname,
+@@ -2309,7 +2414,7 @@ static int ext4_dx_add_entry(handle_t *handle, struct ext4_filename *fname,
if (err)
goto journal_error;
@@ -1253,7 +1253,7 @@
if (err != -ENOSPC)
goto cleanup;
-@@ -2433,12 +2538,12 @@ static int ext4_dx_add_entry(handle_t *handle, struct ext4_filename *fname,
+@@ -2429,12 +2534,12 @@ static int ext4_dx_add_entry(handle_t *handle, struct ext4_filename *fname,
goto journal_error;
}
}
@@ -1268,7 +1268,7 @@
goto cleanup;
journal_error:
-@@ -2460,6 +2565,7 @@ static int ext4_dx_add_entry(handle_t *handle, struct ext4_filename *fname,
+@@ -2456,6 +2561,7 @@ static int ext4_dx_add_entry(handle_t *handle, struct ext4_filename *fname,
*/
int ext4_generic_delete_entry(struct inode *dir,
struct ext4_dir_entry_2 *de_del,
@@ -1276,7 +1276,7 @@
struct buffer_head *bh,
void *entry_buf,
int buf_size,
-@@ -2474,7 +2580,7 @@ int ext4_generic_delete_entry(struct inode *dir,
+@@ -2470,7 +2576,7 @@ int ext4_generic_delete_entry(struct inode *dir,
de = (struct ext4_dir_entry_2 *)entry_buf;
while (i < buf_size - csum_size) {
if (ext4_check_dir_entry(dir, NULL, de, bh,
@@ -1285,7 +1285,7 @@
return -EFSCORRUPTED;
if (de == de_del) {
if (pde)
-@@ -2499,6 +2605,7 @@ int ext4_generic_delete_entry(struct inode *dir,
+@@ -2495,6 +2601,7 @@ int ext4_generic_delete_entry(struct inode *dir,
static int ext4_delete_entry(handle_t *handle,
struct inode *dir,
struct ext4_dir_entry_2 *de_del,
@@ -1293,7 +1293,7 @@
struct buffer_head *bh)
{
int err, csum_size = 0;
-@@ -2519,7 +2626,7 @@ static int ext4_delete_entry(handle_t *handle,
+@@ -2515,7 +2622,7 @@ static int ext4_delete_entry(handle_t *handle,
if (unlikely(err))
goto out;
@@ -1302,7 +1302,7 @@
dir->i_sb->s_blocksize, csum_size);
if (err)
goto out;
-@@ -2716,7 +2823,7 @@ struct ext4_dir_entry_2 *ext4_init_dot_dotdot(struct inode *inode,
+@@ -2712,7 +2819,7 @@ struct ext4_dir_entry_2 *ext4_init_dot_dotdot(struct inode *inode,
{
de->inode = cpu_to_le32(inode->i_ino);
de->name_len = 1;
@@ -1311,7 +1311,7 @@
blocksize);
strcpy(de->name, ".");
ext4_set_de_type(inode->i_sb, de, S_IFDIR);
-@@ -2726,11 +2833,12 @@ struct ext4_dir_entry_2 *ext4_init_dot_dotdot(struct inode *inode,
+@@ -2722,11 +2829,12 @@ struct ext4_dir_entry_2 *ext4_init_dot_dotdot(struct inode *inode,
de->name_len = 2;
if (!dotdot_real_len)
de->rec_len = ext4_rec_len_to_disk(blocksize -
@@ -1326,7 +1326,7 @@
strcpy(de->name, "..");
ext4_set_de_type(inode->i_sb, de, S_IFDIR);
-@@ -2862,7 +2970,8 @@ bool ext4_empty_dir(struct inode *inode)
+@@ -2858,7 +2966,8 @@ bool ext4_empty_dir(struct inode *inode)
}
sb = inode->i_sb;
@@ -1336,7 +1336,7 @@
EXT4_ERROR_INODE(inode, "invalid size");
return true;
}
-@@ -2874,7 +2983,7 @@ bool ext4_empty_dir(struct inode *inode)
+@@ -2870,7 +2979,7 @@ bool ext4_empty_dir(struct inode *inode)
return true;
de = (struct ext4_dir_entry_2 *) bh->b_data;
@@ -1345,7 +1345,7 @@
0) ||
le32_to_cpu(de->inode) != inode->i_ino || strcmp(".", de->name)) {
ext4_warning_inode(inode, "directory missing '.'");
-@@ -2883,7 +2992,7 @@ bool ext4_empty_dir(struct inode *inode)
+@@ -2879,7 +2988,7 @@ bool ext4_empty_dir(struct inode *inode)
}
offset = ext4_rec_len_from_disk(de->rec_len, sb->s_blocksize);
de = ext4_next_entry(de, sb->s_blocksize);
@@ -1354,7 +1354,7 @@
offset) ||
le32_to_cpu(de->inode) == 0 || strcmp("..", de->name)) {
ext4_warning_inode(inode, "directory missing '..'");
-@@ -2907,7 +3016,7 @@ bool ext4_empty_dir(struct inode *inode)
+@@ -2903,7 +3012,7 @@ bool ext4_empty_dir(struct inode *inode)
de = (struct ext4_dir_entry_2 *) (bh->b_data +
(offset & (sb->s_blocksize - 1)));
if (ext4_check_dir_entry(inode, NULL, de, bh,
@@ -1363,7 +1363,7 @@
offset = (offset | (sb->s_blocksize - 1)) + 1;
continue;
}
-@@ -3102,6 +3211,8 @@ static int ext4_rmdir(struct inode *dir, struct dentry *dentry)
+@@ -3098,6 +3207,8 @@ static int ext4_rmdir(struct inode *dir, struct dentry *dentry)
struct buffer_head *bh;
struct ext4_dir_entry_2 *de;
handle_t *handle = NULL;
@@ -1372,7 +1372,7 @@
if (unlikely(ext4_forced_shutdown(EXT4_SB(dir->i_sb))))
return -EIO;
-@@ -3116,7 +3227,7 @@ static int ext4_rmdir(struct inode *dir, struct dentry *dentry)
+@@ -3112,7 +3223,7 @@ static int ext4_rmdir(struct inode *dir, struct dentry *dentry)
return retval;
retval = -ENOENT;
@@ -1381,7 +1381,7 @@
if (IS_ERR(bh))
return PTR_ERR(bh);
if (!bh)
-@@ -3143,7 +3254,7 @@ static int ext4_rmdir(struct inode *dir, struct dentry *dentry)
+@@ -3139,7 +3250,7 @@ static int ext4_rmdir(struct inode *dir, struct dentry *dentry)
if (IS_DIRSYNC(dir))
ext4_handle_sync(handle);
@@ -1390,7 +1390,7 @@
if (retval)
goto end_rmdir;
if (!EXT4_DIR_LINK_EMPTY(inode))
-@@ -3192,8 +3303,9 @@ int __ext4_unlink(handle_t *handle, struct inode *dir, const struct qstr *d_name
+@@ -3188,8 +3299,9 @@ int __ext4_unlink(handle_t *handle, struct inode *dir, const struct qstr *d_name
struct buffer_head *bh;
struct ext4_dir_entry_2 *de;
int skip_remove_dentry = 0;
@@ -1401,7 +1401,7 @@
if (IS_ERR(bh))
return PTR_ERR(bh);
-@@ -3216,7 +3328,7 @@ int __ext4_unlink(handle_t *handle, struct inode *dir, const struct qstr *d_name
+@@ -3212,7 +3324,7 @@ int __ext4_unlink(handle_t *handle, struct inode *dir, const struct qstr *d_name
ext4_handle_sync(handle);
if (!skip_remove_dentry) {
@@ -1410,7 +1410,7 @@
if (retval)
goto out;
dir->i_ctime = dir->i_mtime = current_time(dir);
-@@ -3522,6 +3634,7 @@ struct ext4_renament {
+@@ -3518,6 +3630,7 @@ struct ext4_renament {
int dir_nlink_delta;
/* entry for "dentry" */
@@ -1418,7 +1418,7 @@
struct buffer_head *bh;
struct ext4_dir_entry_2 *de;
int inlined;
-@@ -3609,12 +3722,13 @@ static int ext4_find_delete_entry(handle_t *handle, struct inode *dir,
+@@ -3605,12 +3718,13 @@ static int ext4_find_delete_entry(handle_t *handle, struct inode *dir,
int retval = -ENOENT;
struct buffer_head *bh;
struct ext4_dir_entry_2 *de;
@@ -1434,7 +1434,7 @@
brelse(bh);
}
return retval;
-@@ -3638,7 +3752,8 @@ static void ext4_rename_delete(handle_t *handle, struct ext4_renament *ent,
+@@ -3634,7 +3748,8 @@ static void ext4_rename_delete(handle_t *handle, struct ext4_renament *ent,
retval = ext4_find_delete_entry(handle, ent->dir,
&ent->dentry->d_name);
} else {
@@ -1444,7 +1444,7 @@
if (retval == -ENOENT) {
retval = ext4_find_delete_entry(handle, ent->dir,
&ent->dentry->d_name);
-@@ -3751,7 +3866,8 @@ static int ext4_rename(struct inode *old_dir, struct dentry *old_dentry,
+@@ -3747,7 +3862,8 @@ static int ext4_rename(struct inode *old_dir, struct dentry *old_dentry,
return retval;
}
@@ -1454,7 +1454,7 @@
if (IS_ERR(old.bh))
return PTR_ERR(old.bh);
/*
-@@ -3765,7 +3881,7 @@ static int ext4_rename(struct inode *old_dir, struct dentry *old_dentry,
+@@ -3761,7 +3877,7 @@ static int ext4_rename(struct inode *old_dir, struct dentry *old_dentry,
goto end_rename;
new.bh = ext4_find_entry(new.dir, &new.dentry->d_name,
@@ -1463,7 +1463,7 @@
if (IS_ERR(new.bh)) {
retval = PTR_ERR(new.bh);
new.bh = NULL;
-@@ -3971,7 +4087,7 @@ static int ext4_cross_rename(struct inode *old_dir, struct dentry *old_dentry,
+@@ -3967,7 +4083,7 @@ static int ext4_cross_rename(struct inode *old_dir, struct dentry *old_dentry,
return retval;
old.bh = ext4_find_entry(old.dir, &old.dentry->d_name,
@@ -1472,7 +1472,7 @@
if (IS_ERR(old.bh))
return PTR_ERR(old.bh);
/*
-@@ -3985,7 +4101,7 @@ static int ext4_cross_rename(struct inode *old_dir, struct dentry *old_dentry,
+@@ -3981,7 +4097,7 @@ static int ext4_cross_rename(struct inode *old_dir, struct dentry *old_dentry,
goto end_rename;
new.bh = ext4_find_entry(new.dir, &new.dentry->d_name,
@@ -1484,7 +1484,7 @@
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
-@@ -4288,12 +4288,6 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
+@@ -4251,12 +4251,6 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
struct unicode_map *encoding;
__u16 encoding_flags;
diff --git a/android-mainline/ANDROID-ext4-Optimize-match-for-casefolded-encrypted-dirs.patch b/android-mainline/ANDROID-ext4-Optimize-match-for-casefolded-encrypted-dirs.patch
index 7e36ded..c29338b 100644
--- a/android-mainline/ANDROID-ext4-Optimize-match-for-casefolded-encrypted-dirs.patch
+++ b/android-mainline/ANDROID-ext4-Optimize-match-for-casefolded-encrypted-dirs.patch
@@ -21,7 +21,7 @@
diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
--- a/fs/ext4/ext4.h
+++ b/fs/ext4/ext4.h
-@@ -2607,9 +2607,9 @@ extern unsigned ext4_free_clusters_after_init(struct super_block *sb,
+@@ -2637,9 +2637,9 @@ extern unsigned ext4_free_clusters_after_init(struct super_block *sb,
ext4_fsblk_t ext4_inode_to_goal_block(struct inode *);
#ifdef CONFIG_UNICODE
@@ -33,7 +33,7 @@
#endif
#ifdef CONFIG_FS_ENCRYPTION
-@@ -2640,9 +2640,9 @@ static inline int ext4_fname_setup_filename(struct inode *dir,
+@@ -2670,9 +2670,9 @@ static inline int ext4_fname_setup_filename(struct inode *dir,
ext4_fname_from_fscrypt_name(fname, &name);
#ifdef CONFIG_UNICODE
@@ -45,7 +45,7 @@
}
static inline int ext4_fname_prepare_lookup(struct inode *dir,
-@@ -2659,9 +2659,9 @@ static inline int ext4_fname_prepare_lookup(struct inode *dir,
+@@ -2689,9 +2689,9 @@ static inline int ext4_fname_prepare_lookup(struct inode *dir,
ext4_fname_from_fscrypt_name(fname, &name);
#ifdef CONFIG_UNICODE
@@ -57,7 +57,7 @@
}
static inline void ext4_fname_free_filename(struct ext4_filename *fname)
-@@ -2686,15 +2686,16 @@ static inline int ext4_fname_setup_filename(struct inode *dir,
+@@ -2716,15 +2716,16 @@ static inline int ext4_fname_setup_filename(struct inode *dir,
int lookup,
struct ext4_filename *fname)
{
@@ -79,7 +79,7 @@
diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c
--- a/fs/ext4/namei.c
+++ b/fs/ext4/namei.c
-@@ -797,7 +797,9 @@ dx_probe(struct ext4_filename *fname, struct inode *dir,
+@@ -793,7 +793,9 @@ dx_probe(struct ext4_filename *fname, struct inode *dir,
if (hinfo->hash_version <= DX_HASH_TEA)
hinfo->hash_version += EXT4_SB(dir->i_sb)->s_hash_unsigned;
hinfo->seed = EXT4_SB(dir->i_sb)->s_hash_seed;
@@ -90,7 +90,7 @@
ext4fs_dirhash(dir, fname_name(fname), fname_len(fname), hinfo);
hash = hinfo->hash;
-@@ -1362,20 +1364,22 @@ static int ext4_ci_compare(const struct inode *parent, const struct qstr *name,
+@@ -1358,20 +1360,22 @@ static int ext4_ci_compare(const struct inode *parent, const struct qstr *name,
return ret;
}
@@ -117,7 +117,7 @@
len = utf8_casefold(dir->i_sb->s_encoding,
iname, cf_name->name,
-@@ -1383,10 +1387,18 @@ void ext4_fname_setup_ci_filename(struct inode *dir, const struct qstr *iname,
+@@ -1379,10 +1383,18 @@ void ext4_fname_setup_ci_filename(struct inode *dir, const struct qstr *iname,
if (len <= 0) {
kfree(cf_name->name);
cf_name->name = NULL;
@@ -137,7 +137,7 @@
}
#endif
-@@ -1417,16 +1429,12 @@ static bool ext4_match(struct inode *parent,
+@@ -1413,16 +1425,12 @@ static bool ext4_match(struct inode *parent,
struct qstr cf = {.name = fname->cf_name.name,
.len = fname->cf_name.len};
if (IS_ENCRYPTED(parent)) {
@@ -159,7 +159,7 @@
}
return !ext4_ci_compare(parent, &cf, de->name,
de->name_len, true);
-@@ -2062,15 +2070,11 @@ void ext4_insert_dentry(struct inode *dir,
+@@ -2058,15 +2066,11 @@ void ext4_insert_dentry(struct inode *dir,
de->name_len = fname_len(fname);
memcpy(de->name, fname_name(fname), fname_len(fname));
if (ext4_hash_in_dirent(dir)) {
@@ -178,7 +178,7 @@
}
}
-@@ -2221,10 +2225,9 @@ static int make_indexed_dir(handle_t *handle, struct ext4_filename *fname,
+@@ -2217,10 +2221,9 @@ static int make_indexed_dir(handle_t *handle, struct ext4_filename *fname,
if (fname->hinfo.hash_version <= DX_HASH_TEA)
fname->hinfo.hash_version += EXT4_SB(dir->i_sb)->s_hash_unsigned;
fname->hinfo.seed = EXT4_SB(dir->i_sb)->s_hash_seed;
diff --git a/android-mainline/ANDROID-fs-FS-tracepoints-to-track-IO.patch b/android-mainline/ANDROID-fs-FS-tracepoints-to-track-IO.patch
index 58da0c2..296d297 100644
--- a/android-mainline/ANDROID-fs-FS-tracepoints-to-track-IO.patch
+++ b/android-mainline/ANDROID-fs-FS-tracepoints-to-track-IO.patch
@@ -87,7 +87,7 @@
static __u32 ext4_inode_csum(struct inode *inode, struct ext4_inode *raw,
struct ext4_inode_info *ei)
-@@ -1135,6 +1136,16 @@ static int ext4_write_begin(struct file *file, struct address_space *mapping,
+@@ -1144,6 +1145,16 @@ static int ext4_write_begin(struct file *file, struct address_space *mapping,
if (unlikely(ext4_forced_shutdown(EXT4_SB(inode->i_sb))))
return -EIO;
@@ -104,7 +104,7 @@
trace_ext4_write_begin(inode, pos, len, flags);
/*
* Reserve one block more for addition to orphan list in case
-@@ -1277,6 +1288,7 @@ static int ext4_write_end(struct file *file,
+@@ -1286,6 +1297,7 @@ static int ext4_write_end(struct file *file,
int inline_data = ext4_has_inline_data(inode);
bool verity = ext4_verity_in_progress(inode);
@@ -112,7 +112,7 @@
trace_ext4_write_end(inode, pos, len, copied);
if (inline_data) {
ret = ext4_write_inline_data_end(inode, pos, len,
-@@ -1387,6 +1399,7 @@ static int ext4_journalled_write_end(struct file *file,
+@@ -1396,6 +1408,7 @@ static int ext4_journalled_write_end(struct file *file,
int inline_data = ext4_has_inline_data(inode);
bool verity = ext4_verity_in_progress(inode);
@@ -120,7 +120,7 @@
trace_ext4_journalled_write_end(inode, pos, len, copied);
from = pos & (PAGE_SIZE - 1);
to = from + len;
-@@ -2953,6 +2966,16 @@ static int ext4_da_write_begin(struct file *file, struct address_space *mapping,
+@@ -2962,6 +2975,16 @@ static int ext4_da_write_begin(struct file *file, struct address_space *mapping,
len, flags, pagep, fsdata);
}
*fsdata = (void *)0;
@@ -137,7 +137,7 @@
trace_ext4_da_write_begin(inode, pos, len, flags);
if (ext4_test_inode_state(inode, EXT4_STATE_MAY_INLINE_DATA)) {
-@@ -3071,6 +3094,7 @@ static int ext4_da_write_end(struct file *file,
+@@ -3080,6 +3103,7 @@ static int ext4_da_write_end(struct file *file,
return ext4_write_end(file, mapping, pos,
len, copied, page, fsdata);
diff --git a/android-mainline/ANDROID-sched-Add-rvh-for-cpu-controller-cgroup-attach.patch b/android-mainline/ANDROID-sched-Add-rvh-for-cpu-controller-cgroup-attach.patch
index 69eb791..8d9e19f 100644
--- a/android-mainline/ANDROID-sched-Add-rvh-for-cpu-controller-cgroup-attach.patch
+++ b/android-mainline/ANDROID-sched-Add-rvh-for-cpu-controller-cgroup-attach.patch
@@ -49,7 +49,7 @@
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
-@@ -8386,6 +8386,8 @@ static void cpu_cgroup_attach(struct cgroup_taskset *tset)
+@@ -8376,6 +8376,8 @@ static void cpu_cgroup_attach(struct cgroup_taskset *tset)
cgroup_taskset_for_each(task, css, tset)
sched_move_task(task);
diff --git a/android-mainline/ANDROID-sched-Export-few-scheduler-symbols-for-vendor-modules.patch b/android-mainline/ANDROID-sched-Export-few-scheduler-symbols-for-vendor-modules.patch
index 7765fe8..0aed9f4 100644
--- a/android-mainline/ANDROID-sched-Export-few-scheduler-symbols-for-vendor-modules.patch
+++ b/android-mainline/ANDROID-sched-Export-few-scheduler-symbols-for-vendor-modules.patch
@@ -63,7 +63,7 @@
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
--- a/kernel/sched/sched.h
+++ b/kernel/sched/sched.h
-@@ -1405,8 +1405,6 @@ enum numa_faults_stats {
+@@ -1406,8 +1406,6 @@ enum numa_faults_stats {
};
extern void sched_setnuma(struct task_struct *p, int node);
extern int migrate_task_to(struct task_struct *p, int cpu);
@@ -72,13 +72,13 @@
extern void init_numa_balancing(unsigned long clone_flags, struct task_struct *p);
#else
static inline void
-@@ -1417,6 +1415,9 @@ init_numa_balancing(unsigned long clone_flags, struct task_struct *p)
+@@ -1418,6 +1416,9 @@ init_numa_balancing(unsigned long clone_flags, struct task_struct *p)
#ifdef CONFIG_SMP
+extern int migrate_swap(struct task_struct *p, struct task_struct *t,
+ int cpu, int scpu);
+
- #define BALANCE_WORK 0x01
- #define BALANCE_PUSH 0x02
-
+ static inline void
+ queue_balance_callback(struct rq *rq,
+ struct callback_head *head,
diff --git a/android-mainline/ANDROID-sched-Export-sched_setattr_nocheck.patch b/android-mainline/ANDROID-sched-Export-sched_setattr_nocheck.patch
index 891e4d5..3795a39 100644
--- a/android-mainline/ANDROID-sched-Export-sched_setattr_nocheck.patch
+++ b/android-mainline/ANDROID-sched-Export-sched_setattr_nocheck.patch
@@ -16,7 +16,7 @@
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
-@@ -6127,6 +6127,7 @@ int sched_setattr_nocheck(struct task_struct *p, const struct sched_attr *attr)
+@@ -6113,6 +6113,7 @@ int sched_setattr_nocheck(struct task_struct *p, const struct sched_attr *attr)
{
return __sched_setscheduler(p, attr, false, true);
}
diff --git a/android-mainline/ANDROID-sched-Introduce-uclamp-latency-and-boost-wrapper.patch b/android-mainline/ANDROID-sched-Introduce-uclamp-latency-and-boost-wrapper.patch
index 94c0627..d6435cc 100644
--- a/android-mainline/ANDROID-sched-Introduce-uclamp-latency-and-boost-wrapper.patch
+++ b/android-mainline/ANDROID-sched-Introduce-uclamp-latency-and-boost-wrapper.patch
@@ -20,7 +20,7 @@
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
--- a/kernel/sched/sched.h
+++ b/kernel/sched/sched.h
-@@ -2523,6 +2523,11 @@ unsigned long uclamp_rq_util_with(struct rq *rq, unsigned long util,
+@@ -2520,6 +2520,11 @@ unsigned long uclamp_rq_util_with(struct rq *rq, unsigned long util,
return clamp(util, min_util, max_util);
}
@@ -32,7 +32,7 @@
/*
* When uclamp is compiled in, the aggregation at rq level is 'turned off'
* by default in the fast path and only gets turned on once userspace performs
-@@ -2543,12 +2548,36 @@ unsigned long uclamp_rq_util_with(struct rq *rq, unsigned long util,
+@@ -2540,12 +2545,36 @@ unsigned long uclamp_rq_util_with(struct rq *rq, unsigned long util,
return util;
}
diff --git a/android-mainline/ANDROID-sched-Use-normal-vendor-hook-in-scheduler-tick.patch b/android-mainline/ANDROID-sched-Use-normal-vendor-hook-in-scheduler-tick.patch
index 58310cd..0cd5e0d 100644
--- a/android-mainline/ANDROID-sched-Use-normal-vendor-hook-in-scheduler-tick.patch
+++ b/android-mainline/ANDROID-sched-Use-normal-vendor-hook-in-scheduler-tick.patch
@@ -56,7 +56,7 @@
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
-@@ -4575,7 +4575,7 @@ void scheduler_tick(void)
+@@ -4561,7 +4561,7 @@ void scheduler_tick(void)
trigger_load_balance(rq);
#endif
diff --git a/android-mainline/ANDROID-sched-add-vendor-hooks-to-handle-scheduling-priority.patch b/android-mainline/ANDROID-sched-add-vendor-hooks-to-handle-scheduling-priority.patch
index f72a2cf..db4d98e 100644
--- a/android-mainline/ANDROID-sched-add-vendor-hooks-to-handle-scheduling-priority.patch
+++ b/android-mainline/ANDROID-sched-add-vendor-hooks-to-handle-scheduling-priority.patch
@@ -92,7 +92,7 @@
/*
* The child is not yet in the pid-hash so no cgroup attach races,
-@@ -5405,6 +5407,7 @@ void rt_mutex_setprio(struct task_struct *p, struct task_struct *pi_task)
+@@ -5391,6 +5393,7 @@ void rt_mutex_setprio(struct task_struct *p, struct task_struct *pi_task)
struct rq_flags rf;
struct rq *rq;
@@ -100,7 +100,7 @@
/* XXX used to be waiter->prio, not waiter->task->prio */
prio = __rt_effective_prio(pi_task, p->normal_prio);
-@@ -5539,6 +5542,7 @@ void set_user_nice(struct task_struct *p, long nice)
+@@ -5525,6 +5528,7 @@ void set_user_nice(struct task_struct *p, long nice)
*/
rq = task_rq_lock(p, &rf);
update_rq_clock(rq);
@@ -108,7 +108,7 @@
/*
* The RT priorities are set via sched_setscheduler(), but we still
-@@ -5761,6 +5765,8 @@ static void __setscheduler(struct rq *rq, struct task_struct *p,
+@@ -5747,6 +5751,8 @@ static void __setscheduler(struct rq *rq, struct task_struct *p,
p->sched_class = &rt_sched_class;
else
p->sched_class = &fair_sched_class;
diff --git a/android-mainline/ANDROID-sched-avoid-placing-RT-threads-on-cores-handling-softirqs.patch b/android-mainline/ANDROID-sched-avoid-placing-RT-threads-on-cores-handling-softirqs.patch
index 23af3f1..b021d45 100644
--- a/android-mainline/ANDROID-sched-avoid-placing-RT-threads-on-cores-handling-softirqs.patch
+++ b/android-mainline/ANDROID-sched-avoid-placing-RT-threads-on-cores-handling-softirqs.patch
@@ -203,7 +203,7 @@
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
--- a/kernel/sched/sched.h
+++ b/kernel/sched/sched.h
-@@ -2747,3 +2747,15 @@ static inline bool is_per_cpu_kthread(struct task_struct *p)
+@@ -2744,3 +2744,15 @@ static inline bool is_per_cpu_kthread(struct task_struct *p)
void swake_up_all_locked(struct swait_queue_head *q);
void __prepare_to_swait(struct swait_queue_head *q, struct swait_queue *wait);
diff --git a/android-mainline/ANDROID-sched-core-Add-a-latency-sensitive-flag-to-uclamp.patch b/android-mainline/ANDROID-sched-core-Add-a-latency-sensitive-flag-to-uclamp.patch
index b46f6f1..d650385 100644
--- a/android-mainline/ANDROID-sched-core-Add-a-latency-sensitive-flag-to-uclamp.patch
+++ b/android-mainline/ANDROID-sched-core-Add-a-latency-sensitive-flag-to-uclamp.patch
@@ -26,7 +26,7 @@
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
-@@ -8495,6 +8495,27 @@ static int cpu_uclamp_max_show(struct seq_file *sf, void *v)
+@@ -8485,6 +8485,27 @@ static int cpu_uclamp_max_show(struct seq_file *sf, void *v)
cpu_uclamp_print(sf, UCLAMP_MAX);
return 0;
}
@@ -54,7 +54,7 @@
#endif /* CONFIG_UCLAMP_TASK_GROUP */
#ifdef CONFIG_FAIR_GROUP_SCHED
-@@ -8863,6 +8884,12 @@ static struct cftype cpu_legacy_files[] = {
+@@ -8853,6 +8874,12 @@ static struct cftype cpu_legacy_files[] = {
.seq_show = cpu_uclamp_max_show,
.write = cpu_uclamp_max_write,
},
@@ -67,7 +67,7 @@
#endif
{ } /* Terminate */
};
-@@ -9044,6 +9071,12 @@ static struct cftype cpu_files[] = {
+@@ -9034,6 +9061,12 @@ static struct cftype cpu_files[] = {
.seq_show = cpu_uclamp_max_show,
.write = cpu_uclamp_max_write,
},
diff --git a/android-mainline/ANDROID-sched-core-Add-vendor-hook-to-change-task-affinity.patch b/android-mainline/ANDROID-sched-core-Add-vendor-hook-to-change-task-affinity.patch
index dee3c7c..cd4b17f 100644
--- a/android-mainline/ANDROID-sched-core-Add-vendor-hook-to-change-task-affinity.patch
+++ b/android-mainline/ANDROID-sched-core-Add-vendor-hook-to-change-task-affinity.patch
@@ -51,7 +51,7 @@
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
-@@ -6557,6 +6557,9 @@ long sched_setaffinity(pid_t pid, const struct cpumask *in_mask)
+@@ -6543,6 +6543,9 @@ long sched_setaffinity(pid_t pid, const struct cpumask *in_mask)
goto again;
}
}
diff --git a/android-mainline/ANDROID-sched-core-Export-symbols-needed-by-modules.patch b/android-mainline/ANDROID-sched-core-Export-symbols-needed-by-modules.patch
index d45b489..6f1e1bd 100644
--- a/android-mainline/ANDROID-sched-core-Export-symbols-needed-by-modules.patch
+++ b/android-mainline/ANDROID-sched-core-Export-symbols-needed-by-modules.patch
@@ -26,7 +26,7 @@
/*
* When a task is enqueued on a rq, the clamp bucket currently defined by the
-@@ -5682,6 +5683,7 @@ int idle_cpu(int cpu)
+@@ -5668,6 +5669,7 @@ int idle_cpu(int cpu)
return 1;
}
diff --git a/android-mainline/ANDROID-sched-gki-add-padding-to-some-structs-to-support-WALT.patch b/android-mainline/ANDROID-sched-gki-add-padding-to-some-structs-to-support-WALT.patch
index ad3b890..918c764 100644
--- a/android-mainline/ANDROID-sched-gki-add-padding-to-some-structs-to-support-WALT.patch
+++ b/android-mainline/ANDROID-sched-gki-add-padding-to-some-structs-to-support-WALT.patch
@@ -105,7 +105,7 @@
};
extern void init_defrootdomain(void);
-@@ -1063,6 +1068,8 @@ struct rq {
+@@ -1062,6 +1067,8 @@ struct rq {
#endif
unsigned int push_busy;
struct cpu_stop_work push_work;
diff --git a/android-mainline/ANDROID-vendor_hooks-add-waiting-information-for-blocked-tasks.patch b/android-mainline/ANDROID-vendor_hooks-add-waiting-information-for-blocked-tasks.patch
index cb986b0..0c9cdda 100644
--- a/android-mainline/ANDROID-vendor_hooks-add-waiting-information-for-blocked-tasks.patch
+++ b/android-mainline/ANDROID-vendor_hooks-add-waiting-information-for-blocked-tasks.patch
@@ -234,7 +234,7 @@
/*
* Export tracepoints that act as a bare tracehook (ie: have no trace event
-@@ -7016,6 +7017,7 @@ void sched_show_task(struct task_struct *p)
+@@ -7002,6 +7003,7 @@ void sched_show_task(struct task_struct *p)
print_worker_info(KERN_INFO, p);
print_stop_info(KERN_INFO, p);
diff --git a/android-mainline/FROMLIST-HID-nintendo-add-nintendo-switch-controller-driver.patch b/android-mainline/FROMLIST-HID-nintendo-add-nintendo-switch-controller-driver.patch
index 665a0b0..068947d 100644
--- a/android-mainline/FROMLIST-HID-nintendo-add-nintendo-switch-controller-driver.patch
+++ b/android-mainline/FROMLIST-HID-nintendo-add-nintendo-switch-controller-driver.patch
@@ -32,7 +32,7 @@
diff --git a/MAINTAINERS b/MAINTAINERS
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -12569,6 +12569,12 @@ W: http://www.netlab.is.tsukuba.ac.jp/~yokota/izumi/ninja/
+@@ -12570,6 +12570,12 @@ W: http://www.netlab.is.tsukuba.ac.jp/~yokota/izumi/ninja/
F: Documentation/scsi/NinjaSCSI.rst
F: drivers/scsi/nsp32*
diff --git a/android-mainline/Revert-sched-Remove-sched_setscheduler-EXPORTs.patch b/android-mainline/Revert-sched-Remove-sched_setscheduler-EXPORTs.patch
index 036cb21..f9314c8 100644
--- a/android-mainline/Revert-sched-Remove-sched_setscheduler-EXPORTs.patch
+++ b/android-mainline/Revert-sched-Remove-sched_setscheduler-EXPORTs.patch
@@ -18,7 +18,7 @@
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
-@@ -6058,11 +6058,13 @@ int sched_setscheduler(struct task_struct *p, int policy,
+@@ -6044,11 +6044,13 @@ int sched_setscheduler(struct task_struct *p, int policy,
{
return _sched_setscheduler(p, policy, param, true);
}
@@ -32,7 +32,7 @@
int sched_setattr_nocheck(struct task_struct *p, const struct sched_attr *attr)
{
-@@ -6087,6 +6089,7 @@ int sched_setscheduler_nocheck(struct task_struct *p, int policy,
+@@ -6073,6 +6075,7 @@ int sched_setscheduler_nocheck(struct task_struct *p, int policy,
{
return _sched_setscheduler(p, policy, param, false);
}
diff --git a/android-mainline/Revert-sched-core-Prevent-race-condition-between-cpuset-and-__sched_setscheduler.patch b/android-mainline/Revert-sched-core-Prevent-race-condition-between-cpuset-and-__sched_setscheduler.patch
index 60bf172..e754dc4 100644
--- a/android-mainline/Revert-sched-core-Prevent-race-condition-between-cpuset-and-__sched_setscheduler.patch
+++ b/android-mainline/Revert-sched-core-Prevent-race-condition-between-cpuset-and-__sched_setscheduler.patch
@@ -75,7 +75,7 @@
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
-@@ -5874,9 +5874,6 @@ static int __sched_setscheduler(struct task_struct *p,
+@@ -5860,9 +5860,6 @@ static int __sched_setscheduler(struct task_struct *p,
return retval;
}
@@ -85,7 +85,7 @@
/*
* Make sure no PI-waiters arrive (or leave) while we are
* changing the priority of the task:
-@@ -5951,8 +5948,6 @@ static int __sched_setscheduler(struct task_struct *p,
+@@ -5937,8 +5934,6 @@ static int __sched_setscheduler(struct task_struct *p,
if (unlikely(oldpolicy != -1 && oldpolicy != p->policy)) {
policy = oldpolicy = -1;
task_rq_unlock(rq, p, &rf);
@@ -94,7 +94,7 @@
goto recheck;
}
-@@ -6014,10 +6009,8 @@ static int __sched_setscheduler(struct task_struct *p,
+@@ -6000,10 +5995,8 @@ static int __sched_setscheduler(struct task_struct *p,
head = splice_balance_callbacks(rq);
task_rq_unlock(rq, p, &rf);
@@ -106,7 +106,7 @@
/* Run balance callbacks after we've adjusted the PI chain: */
balance_callbacks(rq, head);
-@@ -6027,8 +6020,6 @@ static int __sched_setscheduler(struct task_struct *p,
+@@ -6013,8 +6006,6 @@ static int __sched_setscheduler(struct task_struct *p,
unlock:
task_rq_unlock(rq, p, &rf);
@@ -115,7 +115,7 @@
return retval;
}
-@@ -6157,14 +6148,9 @@ do_sched_setscheduler(pid_t pid, int policy, struct sched_param __user *param)
+@@ -6143,14 +6134,9 @@ do_sched_setscheduler(pid_t pid, int policy, struct sched_param __user *param)
rcu_read_lock();
retval = -ESRCH;
p = find_process_by_pid(pid);
diff --git a/android-mainline/series b/android-mainline/series
index 1cb121e..45b849e 100644
--- a/android-mainline/series
+++ b/android-mainline/series
@@ -1,8 +1,8 @@
#
# android-mainline patches
#
-# Applies onto upstream 614cb5894306 Linux v5.10-12913-g614cb5894306
-# Matches android-mainline 1bc25c60c18b ("Merge 614cb5894306 ("Merge tag 'acpi-5.11-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm") into android-mainline")
+# Applies onto upstream 3b80dee70eaa Linux v5.10-13264-g3b80dee70eaa
+# Matches android-mainline 1e5e020b085d ("Merge 3b80dee70eaa ("Merge tag 'sched-urgent-2020-12-27' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip") into android-mainline")
#
Revert-Merge-345b17acb1aa-Merge-tag-for-linus-5.11-rc1-of-git-git.kernel.org-pub-scm-linux-kernel-git-rw-uml-into-android-mainline.patch
Revert-block-grant-IOPRIO_CLASS_RT-to-CAP_SYS_NICE.patch