Re: PATCH/FIX for drivers/cdrom/cdrom.c

Helge Hafting
2006-08-17T14:41:29Z

Lennart Sorensen wrote:
> On Thu, Aug 17, 2006 at 09:41:06AM -0400, Jeff Garzik wrote:
>
>> Lennart Sorensen wrote:
>>
>>> Why can't O_EXCL mean that the kernel prevents anyone else from issuing
>>> ioctl's to the device? One would think that is the meaning of exlusive.
>>> That way when the burning program opens the device with O_EXCL, no one
>>> else can screw it up while it is open. If it happens to be polled by
>>> hal when the burning program tries to open it, it can just wait and
>>> retry again until it gets it open.
>>>
>> Such use of O_EXCL is a weird and non-standard behavior.
>>
>
> So what method exists for opening a file/device an guaranteeing that
> nothing else can do anything to it?
>
None on the file level I hope, for it will surely get abused.
Windows have exclusive open for example, and there acrobat reader
locks the pdf file it views, so you can't make a new version without
killing acrobat first. (And then you have to restart it to
view the new file.) Stupid in the extreme. Fortunately, acrobat can't
do that on linux where there is no (easy) opportunity to do so.

There are many other examples - backup sw can't read files that
happens to be opened exclusive by some process.

I guess this particular case could be solved by fixing the cdrom
driver like this:

Whenever the device is opened for writing (i.e. someone is
burning a CD/DVD), then reject the probing ioctls HAL uses.
Or just make the device exclusive while burning. Restore
normal operation as soon as the burn ends. There is no
use for reading the device during a burn anyway - a special case
for CD/DVD writers.

Helge Hafting