<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">
From: Peter Osterlund &lt;petero2@telia.com&gt;

The CDROM_SEND_PACKET ioctl passes a struct cdrom_generic_command from user
space, which contains a timeout field.  The timeout is measured in jiffies,
but the conversion from user to kernel jiffies is missing, which makes the
timeout 10 times shorter than it should be in 2.5 kernels on x86.  This
causes CDRW formatting with cdrwtool to fail.



 drivers/cdrom/cdrom.c |    3 +++
 1 files changed, 3 insertions(+)

diff -puN drivers/cdrom/cdrom.c~CDROM_SEND_PACKET-timeout-fix drivers/cdrom/cdrom.c
--- 25/drivers/cdrom/cdrom.c~CDROM_SEND_PACKET-timeout-fix	2003-07-13 14:18:20.000000000 -0700
+++ 25-akpm/drivers/cdrom/cdrom.c	2003-07-13 14:18:20.000000000 -0700
@@ -295,6 +295,8 @@ MODULE_PARM(check_media_type, "i");
 #define cdinfo(type, fmt, args...) 
 #endif
 
+#define MULDIV(X,MUL,DIV) ((((X % DIV) * MUL) / DIV) + ((X / DIV) * MUL))
+
 /* These are used to simplify getting data in from and back to user land */
 #define IOCTL_IN(arg, type, in)					\
 	if (copy_from_user(&amp;(in), (type *) (arg), sizeof (in)))	\
@@ -2171,6 +2173,7 @@ static int mmc_ioctl(struct cdrom_device
 			return -ENOSYS;
 		cdinfo(CD_DO_IOCTL, "entering CDROM_SEND_PACKET\n"); 
 		IOCTL_IN(arg, struct cdrom_generic_command, cgc);
+		cgc.timeout = MULDIV(cgc.timeout, HZ, USER_HZ);
 		return cdrom_do_cmd(cdi, &amp;cgc);
 		}
 	case CDROM_NEXT_WRITABLE: {

_
</pre></body></html>