Page MenuHomeFreeBSD

D31672.id94167.diff
No OneTemporary

D31672.id94167.diff

Index: sys/compat/linuxkpi/common/include/linux/fs.h
===================================================================
--- sys/compat/linuxkpi/common/include/linux/fs.h
+++ sys/compat/linuxkpi/common/include/linux/fs.h
@@ -254,6 +254,13 @@
return (f);
}
+static inline bool
+get_file_rcu(struct linux_file *f)
+{
+ return (refcount_acquire_if_not_zero(
+ f->_file == NULL ? &f->f_count : &f->_file->f_count));
+}
+
static inline struct inode *
igrab(struct inode *inode)
{
Index: sys/compat/linuxkpi/common/src/linux_compat.c
===================================================================
--- sys/compat/linuxkpi/common/src/linux_compat.c
+++ sys/compat/linuxkpi/common/src/linux_compat.c
@@ -90,6 +90,7 @@
#include <linux/poll.h>
#include <linux/smp.h>
#include <linux/wait_bit.h>
+#include <linux/rcupdate.h>
#if defined(__i386__) || defined(__amd64__)
#include <asm/smp.h>
@@ -1519,6 +1520,9 @@
if (td == NULL)
td = curthread;
+ linux_rcu_barrier(RCU_TYPE_REGULAR);
+ linux_rcu_barrier(RCU_TYPE_SLEEPABLE);
+
error = 0;
filp->f_flags = file->f_flag;
linux_set_current(td);

File Metadata

Mime Type
text/plain
Expires
Sat, Jan 31, 4:43 PM (7 h, 21 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28131598
Default Alt Text
D31672.id94167.diff (1 KB)

Event Timeline