|
@@ -4,6 +4,7 @@
|
|
* Copyright (C) 1995 Linus Torvalds
|
|
* Copyright (C) 1995 Linus Torvalds
|
|
*/
|
|
*/
|
|
|
|
|
|
|
|
+#include <linux/stddef.h>
|
|
#include <linux/kernel.h>
|
|
#include <linux/kernel.h>
|
|
#include <linux/module.h>
|
|
#include <linux/module.h>
|
|
#include <linux/time.h>
|
|
#include <linux/time.h>
|
|
@@ -54,7 +55,6 @@ EXPORT_SYMBOL(vfs_readdir);
|
|
* anyway. Thus the special "fillonedir()" function for that
|
|
* anyway. Thus the special "fillonedir()" function for that
|
|
* case (the low-level handlers don't need to care about this).
|
|
* case (the low-level handlers don't need to care about this).
|
|
*/
|
|
*/
|
|
-#define NAME_OFFSET(de) ((int) ((de)->d_name - (char __user *) (de)))
|
|
|
|
|
|
|
|
#ifdef __ARCH_WANT_OLD_READDIR
|
|
#ifdef __ARCH_WANT_OLD_READDIR
|
|
|
|
|
|
@@ -152,7 +152,8 @@ static int filldir(void * __buf, const char * name, int namlen, loff_t offset,
|
|
struct linux_dirent __user * dirent;
|
|
struct linux_dirent __user * dirent;
|
|
struct getdents_callback * buf = (struct getdents_callback *) __buf;
|
|
struct getdents_callback * buf = (struct getdents_callback *) __buf;
|
|
unsigned long d_ino;
|
|
unsigned long d_ino;
|
|
- int reclen = ALIGN(NAME_OFFSET(dirent) + namlen + 2, sizeof(long));
|
|
|
|
|
|
+ int reclen = ALIGN(offsetof(struct linux_dirent, d_name) + namlen + 2,
|
|
|
|
+ sizeof(long));
|
|
|
|
|
|
buf->error = -EINVAL; /* only used if we fail.. */
|
|
buf->error = -EINVAL; /* only used if we fail.. */
|
|
if (reclen > buf->count)
|
|
if (reclen > buf->count)
|
|
@@ -237,7 +238,8 @@ static int filldir64(void * __buf, const char * name, int namlen, loff_t offset,
|
|
{
|
|
{
|
|
struct linux_dirent64 __user *dirent;
|
|
struct linux_dirent64 __user *dirent;
|
|
struct getdents_callback64 * buf = (struct getdents_callback64 *) __buf;
|
|
struct getdents_callback64 * buf = (struct getdents_callback64 *) __buf;
|
|
- int reclen = ALIGN(NAME_OFFSET(dirent) + namlen + 1, sizeof(u64));
|
|
|
|
|
|
+ int reclen = ALIGN(offsetof(struct linux_dirent64, d_name) + namlen + 1,
|
|
|
|
+ sizeof(u64));
|
|
|
|
|
|
buf->error = -EINVAL; /* only used if we fail.. */
|
|
buf->error = -EINVAL; /* only used if we fail.. */
|
|
if (reclen > buf->count)
|
|
if (reclen > buf->count)
|