LINUX_DOP_D_REVALIDATE_TAKES_UNSIGNED
LINUX_IOP_LOOKUP_TAKES_UNSIGNED
LINUX_D_INVALIDATE_IS_VOID
+ LINUX_KERNEL_READ_OFFSET_IS_LAST
dnl If we are guaranteed that keyrings will work - that is
dnl a) The kernel has keyrings enabled
#if defined(HAVE_LINUX___VFS_WRITE)
return __vfs_read(filp, buf, len, pos);
#elif defined(HAVE_LINUX_KERNEL_WRITE)
+# if defined(LINUX_KERNEL_READ_OFFSET_IS_LAST)
return kernel_read(filp, buf, len, pos);
+# else
+ return kernel_read(filp, *pos, buf, len);
+# endif
#else
return filp->f_op->read(filp, buf, len, pos);
#endif
#if defined(HAVE_LINUX___VFS_WRITE)
return __vfs_write(filp, buf, len, pos);
#elif defined(HAVE_LINUX_KERNEL_WRITE)
+# if defined(LINUX_KERNEL_READ_OFFSET_IS_LAST)
return kernel_write(filp, buf, len, pos);
+# else
+ return kernel_write(filp, buf, len, *pos);
+# endif
#else
return filp->f_op->write(filp, buf, len, pos);
#endif
[define if your d_invalidate returns void],
[])
])
+
+AC_DEFUN([LINUX_KERNEL_READ_OFFSET_IS_LAST], [
+ AC_CHECK_LINUX_BUILD([whether offset is the last argument to kernel_read],
+ [ac_cv_linux_func_kernel_read_offset_is_last],
+ [#include <linux/fs.h>],
+ [
+ ssize_t kernel_read(struct file *, void *, size_t, loff_t *);
+ ],
+ [KERNEL_READ_OFFSET_IS_LAST],
+ [define if your kernel_read has offset as the last argument],
+ [])
+])