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