Re: Exposing ROM's though sysfs

Greg KH
2004-07-30T20:34:10Z

On Fri, Jul 30, 2004 at 01:16:14PM -0700, Jesse Barnes wrote:
> On Friday, July 30, 2004 12:55 pm, Greg KH wrote:
> > On Fri, Jul 30, 2004 at 11:49:39AM -0700, Jesse Barnes wrote:
> > > +
> > > + /* If the device has a ROM, map it */
> > > + if (pci_resource_len(pdev, PCI_ROM_RESOURCE)) {
> > > + pci_rom_attr.size = pci_resource_len(pdev, PCI_ROM_RESOURCE);
> > > + sysfs_create_bin_file(&pdev->dev.kobj, &pci_rom_attr);
> > > + }
> >
> > Doesn't this code cause _all_ rom sizes to be the same, as you only have
> > 1 pci_rom_attr variable? You should create a new one for every pci
> > device (making sure to clean it up when the device is removed.)
>
> Yep, that's pretty broken. I guess I need to allocate a pci_rom_attr every
> time we see a ROM... Where would the cleanup code go though? In one of the
> hotplug remove paths?

We need to create a pci_remove_sysfs_dev_files() call, and call it when
the pci device is about to be unregistered (in pci_destroy_dev(), just
before the call to device_unregister()).

thanks,

greg k-h