|
@@ -15,6 +15,7 @@
|
|
|
* published by the Free Software Foundation.
|
|
|
*/
|
|
|
|
|
|
+#include <linux/stddef.h>
|
|
|
#include <linux/kernel.h>
|
|
|
#include <linux/linkage.h>
|
|
|
#include <linux/compat.h>
|
|
@@ -891,8 +892,6 @@ asmlinkage long compat_sys_mount(char __user * dev_name, char __user * dir_name,
|
|
|
return retval;
|
|
|
}
|
|
|
|
|
|
-#define NAME_OFFSET(de) ((int) ((de)->d_name - (char __user *) (de)))
|
|
|
-
|
|
|
struct compat_old_linux_dirent {
|
|
|
compat_ulong_t d_ino;
|
|
|
compat_ulong_t d_offset;
|
|
@@ -981,7 +980,8 @@ static int compat_filldir(void *__buf, const char *name, int namlen,
|
|
|
struct compat_linux_dirent __user * dirent;
|
|
|
struct compat_getdents_callback *buf = __buf;
|
|
|
compat_ulong_t d_ino;
|
|
|
- int reclen = ALIGN(NAME_OFFSET(dirent) + namlen + 2, sizeof(compat_long_t));
|
|
|
+ int reclen = ALIGN(offsetof(struct compat_linux_dirent, d_name) +
|
|
|
+ namlen + 2, sizeof(compat_long_t));
|
|
|
|
|
|
buf->error = -EINVAL; /* only used if we fail.. */
|
|
|
if (reclen > buf->count)
|
|
@@ -1068,8 +1068,8 @@ static int compat_filldir64(void * __buf, const char * name, int namlen, loff_t
|
|
|
{
|
|
|
struct linux_dirent64 __user *dirent;
|
|
|
struct compat_getdents_callback64 *buf = __buf;
|
|
|
- int jj = NAME_OFFSET(dirent);
|
|
|
- int reclen = ALIGN(jj + namlen + 1, sizeof(u64));
|
|
|
+ int reclen = ALIGN(offsetof(struct linux_dirent64, d_name) + namlen + 1,
|
|
|
+ sizeof(u64));
|
|
|
u64 off;
|
|
|
|
|
|
buf->error = -EINVAL; /* only used if we fail.. */
|