Browse Source

[PATCH] x86-64: Print type and size correctly for unknown compat ioctls

Signed-off-by: Andi Kleen <ak@suse.de>
Andi Kleen 18 years ago
parent
commit
a106009bdf
1 changed files with 3 additions and 2 deletions
  1. 3 2
      fs/compat.c

+ 3 - 2
fs/compat.c

@@ -371,13 +371,14 @@ static void compat_ioctl_error(struct file *filp, unsigned int fd,
 			fn = "?";
 			fn = "?";
 	}
 	}
 
 
-	sprintf(buf,"'%c'", (cmd>>24) & 0x3f);
+	sprintf(buf,"'%c'", (cmd>>_IOC_TYPESHIFT) & _IOC_TYPEMASK);
 	if (!isprint(buf[1]))
 	if (!isprint(buf[1]))
 		sprintf(buf, "%02x", buf[1]);
 		sprintf(buf, "%02x", buf[1]);
 	compat_printk("ioctl32(%s:%d): Unknown cmd fd(%d) "
 	compat_printk("ioctl32(%s:%d): Unknown cmd fd(%d) "
-			"cmd(%08x){%s} arg(%08x) on %s\n",
+			"cmd(%08x){t:%s;sz:%u} arg(%08x) on %s\n",
 			current->comm, current->pid,
 			current->comm, current->pid,
 			(int)fd, (unsigned int)cmd, buf,
 			(int)fd, (unsigned int)cmd, buf,
+			(cmd >> _IOC_SIZESHIFT) & _IOC_SIZEMASK,
 			(unsigned int)arg, fn);
 			(unsigned int)arg, fn);
 
 
 	if (path)
 	if (path)