All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kai Engert <kaie@kuix.de>
To: linux-kernel@vger.kernel.org
Cc: Greg KH <greg@kroah.com>, "Nemosoft Unv." <webcam@smcc.demon.nl>
Subject: Re: small patch: enable pwc usb camera driver
Date: Thu, 17 Jun 2004 14:37:51 +0200	[thread overview]
Message-ID: <40D1909F.4090408@kuix.de> (raw)
In-Reply-To: <20040607223919.GA9172@kroah.com>

[-- Attachment #1: Type: text/plain, Size: 764 bytes --]

Greg KH wrote:
> On Tue, Jun 08, 2004 at 12:27:04AM +0200, Nemosoft Unv. wrote:
>> ... 
>>Don't use this. It will BUG() your kernel hard, because of a double free(). 

I confirm, if you disconnect the device / unload the driver, it doesn't 
take long and the kernel reports an exception. My fault, sorry.

> ... I'll wait for someone to send another patch fixing this one ...

I'm attaching a new patch:

- revert video device release code to original no-op,
   using correct function signature.

With this patch applied to 2.6.7, I am able to connect/disconnect the 
camera, load/unload the driver 20 times and everything still works fine.

No warnings during compilation (which was the original reason to mark 
the driver broken, IIUC).

Thanks and Regards,
Kai

[-- Attachment #2: pwcdiff3 --]
[-- Type: text/plain, Size: 1211 bytes --]

diff -ruw org-267/drivers/usb/media/pwc-if.c linux-2.6.7/drivers/usb/media/pwc-if.c
--- org-267/drivers/usb/media/pwc-if.c	2004-06-16 07:19:44.000000000 +0200
+++ linux-2.6.7/drivers/usb/media/pwc-if.c	2004-06-17 13:49:58.268336544 +0200
@@ -129,6 +129,7 @@
 
 static int pwc_video_open(struct inode *inode, struct file *file);
 static int pwc_video_close(struct inode *inode, struct file *file);
+static void pwc_video_release(struct video_device *);
 static ssize_t pwc_video_read(struct file *file, char *buf,
 			  size_t count, loff_t *ppos);
 static unsigned int pwc_video_poll(struct file *file, poll_table *wait);
@@ -1120,6 +1121,12 @@
 	return 0;
 }
 
+static void pwc_video_release(struct video_device *vfd)
+{
+	/* Do nothing to prevent a double free */
+	Trace(TRACE_OPEN, "pwc_video_release() called.\n");
+}
+
 /*
  *	FIXME: what about two parallel reads ????
  *      ANSWER: Not supported. You can't open the device more than once,
@@ -1848,7 +1855,7 @@
 		}
 	}
 
-	pdev->vdev.release = video_device_release;
+	pdev->vdev.release = pwc_video_release;
 	i = video_register_device(&pdev->vdev, VFL_TYPE_GRABBER, video_nr);
 	if (i < 0) {
 		Err("Failed to register as video device (%d).\n", i);

  reply	other threads:[~2004-06-17 12:37 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-06-07 13:00 small patch: enable pwc usb camera driver Kai Engert
2004-06-07 20:20 ` Greg KH
2004-06-07 22:27   ` Nemosoft Unv.
2004-06-07 22:39     ` Greg KH
2004-06-17 12:37       ` Kai Engert [this message]
2004-06-17 19:58         ` Greg KH

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=40D1909F.4090408@kuix.de \
    --to=kaie@kuix.de \
    --cc=greg@kroah.com \
    --cc=kai.engert@gmx.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=webcam@smcc.demon.nl \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.