[[email protected]: getdents patch for 32 -> 64 converter]
PATCH 1/1 [[email protected]: getdents patch for 32 -> 64 converter]
Im guessing this fix will be required on other 64bit archs.
Anton
----- Forwarded message from Marcus Meissner <[email protected]> -----
From: Marcus Meissner <[email protected]>
To: [email protected]
Subject: getdents patch for 32 -> 64 converter
Hi,
With 2.6.4 we now have the glorious hidden d_type passing in getdents.
glibc CVS expects this to be passed if we have a kernel version after 2.6.4, so we have to also handle it in the 32bit syscall converter.
The kernel at least bootet here and my testcase (bootstrap gcc) works fine now.
Can someone please review / apply?
Ciao, Marcus
arch/ppc64/kernel/sys_ppc32.c renamed from arch/ppc64/kernel/sys_ppc32.c.dtype +2 -1
@@ -534,7 +534,7 @@ {struct linux_dirent32 * dirent;struct getdents_callback32 * buf = (struct getdents_callback32 *) __buf; -int reclen =ROUND_UP (NAME_OFFSET (dirent) + namlen +1 ); +int reclen =ROUND_UP (NAME_OFFSET (dirent) + namlen +2 ); buf->error = -EINVAL ;/* only used if we fail.. */ if (reclen > buf->count)
@@ -548,6 +548,7 @@put_user (reclen, &dirent->d_reclen);copy_to_user (dirent->d_name, name, namlen);put_user (0 , dirent->d_name + namlen); +put_user (d_type, (char *) dirent + reclen -1 ); ((char *) dirent) += reclen; buf->current_dir = dirent; buf->count -= reclen;
** Sent via the linuxppc64-dev mail list. See http://lists.linuxppc.org/
----- End forwarded message -----