Re: [PATCH] iuu_phoenix - new release v0.4 - call for review/comments

Oliver Neukum <[email protected]>
Newsgroups gmane.linux.usb.devel
Message-ID <[email protected]>
Am Sonntag 12 August 2007 schrieb [email protected]:
> In this release, the driver use the interrupt context.
> So no more latency problem.
> I still kfree the buffers provided by the usb-serial framework.
> 
> All comments/remarks are welcome
> 
> This driver seems very stable ( tested with 5 readers at the same time )
> 
> Alain
> 

+static int iuu_alloc_buf(struct iuu_private *priv)
+{
+	priv->buf = kzalloc(256, GFP_KERNEL);
+	priv->dbgbuf = kzalloc(256, GFP_KERNEL);
+	priv->writebuf = kzalloc(256, GFP_KERNEL);
+	if (!priv->buf || !priv->dbgbuf || !priv->writebuf) {
+		dbg("%s problem allocation buffer", __FUNCTION__);
+		return -ENOMEM;
+	}
+	return 0;
+}

Memory leak. Only one allocation may have failed. You should
free all allocations in the error case. kfree() can take NULL.

+static int iuu_free_buf(struct iuu_private *priv)
+{
+	kfree(priv->buf);
+	kfree(priv->dbgbuf);
+	kfree(priv->writebuf);
+	return 0;
+}

What could fail? Make it void.

+	if (!(set & TIOCM_RTS) && priv->TIOSTATUS == TIOCM_RTS) {
+		dbg("%s TIOCMSET RESET called !!!", __FUNCTION__);
+		priv->reset = 1;
+		/* force waiting before return
+		 * needed by ctapi phoenix driver */
+		current->state = TASK_UNINTERRUPTIBLE;
+		schedule_timeout(1 + 1000 * HZ / 1000);
+		return 0;
+	}
+

The tty code can leave you on a waitqueue and wake you prematurely.
You must use a real waiting primitive.

+	kfree(port->bulk_out_buffer) ;
+	port->bulk_out_buffer = kmalloc(512, GFP_KERNEL);
+	port->bulk_out_size = 512 ;
+	kfree(port->bulk_in_buffer) ;
+	port->bulk_in_buffer = kmalloc(512, GFP_KERNEL);
+	port->bulk_in_size = 512 ;

This needs error handling.

And some other issues. Please fix this and resend.

	Regards
		Oliver

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.