ChangeSet 1.1537.10.1, 2005/02/23 03:13:02-03:00, [EMAIL PROTECTED]
[PATCH] Fixup 32 bit sys_recvmsg corruption patch
> Marcelo already put in an earlier version of your patch with
> the typo in the conditional which broke compilation on every
> platform.
>
> Please send him a relative patch to fix things up.
Sorry about that. Here is a relative patch that fixes the mossing ||
and
removes the printk as requested by Andi.
ia64/ia32/sys_ia32.c | 14 ++------------
mips64/kernel/linux32.c | 14 ++------------
parisc/kernel/sys_parisc32.c | 14 ++------------
ppc64/kernel/sys_ppc32.c | 14 ++------------
s390x/kernel/linux32.c | 14 ++------------
sparc64/kernel/sys_sparc32.c | 14 ++------------
x86_64/ia32/socket32.c | 14 ++------------
7 files changed, 14 insertions(+), 84 deletions(-)
diff -Nru a/arch/ia64/ia32/sys_ia32.c b/arch/ia64/ia32/sys_ia32.c
--- a/arch/ia64/ia32/sys_ia32.c 2005-02-23 10:06:43 -08:00
+++ b/arch/ia64/ia32/sys_ia32.c 2005-02-23 10:06:43 -08:00
@@ -1684,19 +1684,9 @@
goto fail2;
clen64 = kcmsg32->cmsg_len;
- if ((clen64 < CMSG_ALIGN(sizeof(*ucmsg)))
- (clen64 > (orig_cmsg_len + wp - workbuf))) {
- static int count;
-
- if (count++ < 20)
- printk(KERN_WARNING "recvmsg_fixup: "
- "bad data length %d, level %d, "
- "type %d, process %d (%s)\n",
- clen64, kcmsg32->cmsg_level,
- kcmsg32->cmsg_type,
- current->pid, current->comm);
+ if ((clen64 < CMSG_ALIGN(sizeof(*ucmsg))) ||
+ (clen64 > (orig_cmsg_len + wp - workbuf)))
break;
- }
copy_from_user(CMSG32_DATA(kcmsg32), CMSG_DATA(ucmsg),
clen64 - CMSG_ALIGN(sizeof(*ucmsg)));
clen32 = ((clen64 - CMSG_ALIGN(sizeof(*ucmsg))) +
diff -Nru a/arch/mips64/kernel/linux32.c b/arch/mips64/kernel/linux32.c
--- a/arch/mips64/kernel/linux32.c 2005-02-23 10:06:44 -08:00
+++ b/arch/mips64/kernel/linux32.c 2005-02-23 10:06:44 -08:00
@@ -2822,19 +2822,9 @@
__get_user(kcmsg32->cmsg_type, &ucmsg->cmsg_type);
clen64 = kcmsg32->cmsg_len;
- if ((clen64 < CMSG_ALIGN(sizeof(*ucmsg)))
- (clen64 > (orig_cmsg_len + wp - workbuf))) {
- static int count;
-
- if (count++ < 20)
- printk(KERN_WARNING "recvmsg_fixup: "
- "bad data length %d, level %d, "
- "type %d, process %d (%s)\n",
- clen64, kcmsg32->cmsg_level,
- kcmsg32->cmsg_type,
- current->pid, current->comm);
+ if ((clen64 < CMSG_ALIGN(sizeof(*ucmsg))) ||
+ (clen64 > (orig_cmsg_len + wp - workbuf)))
break;
- }
copy_from_user(CMSG32_DATA(kcmsg32), CMSG_DATA(ucmsg),
clen64 - CMSG_ALIGN(sizeof(*ucmsg)));
clen32 = ((clen64 - CMSG_ALIGN(sizeof(*ucmsg))) +
diff -Nru a/arch/parisc/kernel/sys_parisc32.c
b/arch/parisc/kernel/sys_parisc32.c
--- a/arch/parisc/kernel/sys_parisc32.c 2005-02-23 10:06:43 -08:00
+++ b/arch/parisc/kernel/sys_parisc32.c 2005-02-23 10:06:43 -08:00
@@ -2138,19 +2138,9 @@
__get_user(kcmsg32->cmsg_type, &ucmsg->cmsg_type);
clen64 = kcmsg32->cmsg_len;
- if ((clen64 < CMSG_ALIGN(sizeof(*ucmsg)))
- (clen64 > (orig_cmsg_len + wp - workbuf))) {
- static int count;
-
- if (count++ < 20)
- printk(KERN_WARNING "recvmsg_fixup: "
- "bad data length %d, level %d, "
- "type %d, process %d (%s)\n",
- clen64, kcmsg32->cmsg_level,
- kcmsg32->cmsg_type,
- current->pid, current->comm);
+ if ((clen64 < CMSG_ALIGN(sizeof(*ucmsg))) ||
+ (clen64 > (orig_cmsg_len + wp - workbuf)))
break;
- }
copy_from_user(CMSG32_DATA(kcmsg32), CMSG_DATA(ucmsg),
clen64 - CMSG_ALIGN(sizeof(*ucmsg)));
clen32 = ((clen64 - CMSG_ALIGN(sizeof(*ucmsg))) +
diff -Nru a/arch/ppc64/kernel/sys_ppc32.c b/arch/ppc64/kernel/sys_ppc32.c
--- a/arch/ppc64/kernel/sys_ppc32.c 2005-02-23 10:06:43 -08:00
+++ b/arch/ppc64/kernel/sys_ppc32.c 2005-02-23 10:06:43 -08:00
@@ -3696,19 +3696,9 @@
__get_user(kcmsg32->cmsg_type, &ucmsg->cmsg_type);
clen64 = kcmsg32->cmsg_len;
- if ((clen64 < CMSG_ALIGN(sizeof(*ucmsg)))
- (clen64 > (orig_cmsg_len + wp - workbuf))) {
- static int count;
-
- if (count++ < 20)
- printk(KERN_WARNING "recvmsg_fixup: "
- "bad data length %d, level %d, "
- "type %d, process %d (%s)\n",
- clen64, kcmsg32->cmsg_level,
- kcmsg32->cmsg_type,
- current->pid, current->comm);
+ if ((clen64 < CMSG_ALIGN(sizeof(*ucmsg))) ||
+ (clen64 > (orig_cmsg_len + wp - workbuf)))
break;
- }
copy_from_user(CMSG32_DATA(kcmsg32), CMSG_DATA(ucmsg),
clen64 - CMSG_ALIGN(sizeof(*ucmsg)));
clen32 = ((clen64 - CMSG_ALIGN(sizeof(*ucmsg))) +
diff -Nru a/arch/s390x/kernel/linux32.c b/arch/s390x/kernel/linux32.c
--- a/arch/s390x/kernel/linux32.c 2005-02-23 10:06:44 -08:00
+++ b/arch/s390x/kernel/linux32.c 2005-02-23 10:06:44 -08:00
@@ -2629,19 +2629,9 @@
__get_user(kcmsg32->cmsg_type, &ucmsg->cmsg_type);
clen64 = kcmsg32->cmsg_len;
- if ((clen64 < CMSG_ALIGN(sizeof(*ucmsg)))
- (clen64 > (orig_cmsg_len + wp - workbuf))) {
- static int count;
-
- if (count++ < 20)
- printk(KERN_WARNING "recvmsg_fixup: "
- "bad data length %d, level %d, "
- "type %d, process %d (%s)\n",
- clen64, kcmsg32->cmsg_level,
- kcmsg32->cmsg_type,
- current->pid, current->comm);
+ if ((clen64 < CMSG_ALIGN(sizeof(*ucmsg))) ||
+ (clen64 > (orig_cmsg_len + wp - workbuf)))
break;
- }
copy_from_user(CMSG32_DATA(kcmsg32), CMSG_DATA(ucmsg),
clen64 - CMSG_ALIGN(sizeof(*ucmsg)));
clen32 = ((clen64 - CMSG_ALIGN(sizeof(*ucmsg))) +
diff -Nru a/arch/sparc64/kernel/sys_sparc32.c
b/arch/sparc64/kernel/sys_sparc32.c
--- a/arch/sparc64/kernel/sys_sparc32.c 2005-02-23 10:06:44 -08:00
+++ b/arch/sparc64/kernel/sys_sparc32.c 2005-02-23 10:06:44 -08:00
@@ -2679,19 +2679,9 @@
__get_user(kcmsg32->cmsg_type, &ucmsg->cmsg_type);
clen64 = kcmsg32->cmsg_len;
- if ((clen64 < CMSG_ALIGN(sizeof(*ucmsg)))
- (clen64 > (orig_cmsg_len + wp - workbuf))) {
- static int count;
-
- if (count++ < 20)
- printk(KERN_WARNING "recvmsg_fixup: "
- "bad data length %d, level %d, "
- "type %d, process %d (%s)\n",
- clen64, kcmsg32->cmsg_level,
- kcmsg32->cmsg_type,
- current->pid, current->comm);
+ if ((clen64 < CMSG_ALIGN(sizeof(*ucmsg))) ||
+ (clen64 > (orig_cmsg_len + wp - workbuf)))
break;
- }
if (kcmsg32->cmsg_level == SOL_SOCKET &&
kcmsg32->cmsg_type == SO_TIMESTAMP) {
struct timeval tv;
diff -Nru a/arch/x86_64/ia32/socket32.c b/arch/x86_64/ia32/socket32.c
--- a/arch/x86_64/ia32/socket32.c 2005-02-23 10:06:43 -08:00
+++ b/arch/x86_64/ia32/socket32.c 2005-02-23 10:06:43 -08:00
@@ -334,19 +334,9 @@
__get_user(kcmsg32->cmsg_type, &ucmsg->cmsg_type);
clen64 = kcmsg32->cmsg_len;
- if ((clen64 < CMSG_ALIGN(sizeof(*ucmsg)))
- (clen64 > (orig_cmsg_len + wp - workbuf))) {
- static int count;
-
- if (count++ < 20)
- printk(KERN_WARNING "recvmsg_fixup: "
- "bad data length %d, level %d, "
- "type %d, process %d (%s)\n",
- clen64, kcmsg32->cmsg_level,
- kcmsg32->cmsg_type,
- current->pid, current->comm);
+ if ((clen64 < CMSG_ALIGN(sizeof(*ucmsg))) ||
+ (clen64 > (orig_cmsg_len + wp - workbuf)))
break;
- }
copy_from_user(CMSG32_DATA(kcmsg32), CMSG_DATA(ucmsg),
clen64 - CMSG_ALIGN(sizeof(*ucmsg)));
clen32 = ((clen64 - CMSG_ALIGN(sizeof(*ucmsg))) +
-
To unsubscribe from this list: send the line "unsubscribe bk-commits-24" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html