diff --git a/fs/file.c b/fs/file.c index 59f8d3d825091e9f180a9c05967052dc5e2e1eac..e4c168ddd8e745371628d12257fc8a443299a539 100644 --- a/fs/file.c +++ b/fs/file.c @@ -883,6 +883,10 @@ static struct file *__fget_files(struct files_struct *files, unsigned int fd, file = NULL; else if (!get_file_rcu_many(file, refs)) goto loop; + else if (__fcheck_files(files, fd) != file) { + fput_many(file, refs); + goto loop; + } } rcu_read_unlock();