lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20080705205455.7e6579ea@hyperion.delvare>
Date:	Sat, 5 Jul 2008 20:54:55 +0200
From:	Jean Delvare <khali@...ux-fr.org>
To:	Greg Kroah-Hartman <gregkh@...e.de>,
	Kay Sievers <kay.sievers@...y.org>
Cc:	Hans Verkuil <hverkuil@...all.nl>,
	LKML <linux-kernel@...r.kernel.org>
Subject: device/driver binding notification

Hi Greg, hi Kay,

In the course of finally making the i2c subsystem comply with the Linux
2.6 device driver model, I am facing an issue which affects many v4l
drivers. I'm curious if the core device driver code has something to
offer to solve it.

Basically, a v4l driver creates an i2c bus, instantiates i2c devices on
that bus, and needs i2c chip drivers for these devices. In the past, i2c
devices were always bound to a driver by the time the v4l driver knew
they existed, so they were directly usable. But now that we follow the
device driver model, this is no longer the case. The sequence of events
is as follows:

1* v4l driver creates i2c bus.

2* v4l driver declares i2c devices in that bus.
   At this point, the v4l driver can't be used yet.

3* Later on, the drivers for these devices in question are loaded
   (typically thanks to udev), and they bind to the i2c devices.

4* Now the v4l driver can complete its initialization and users can make
   use of the device.

For now, between steps 2 and 3, I made the v4l driver sleep and
repeatedly check whether i2c_client.driver is set or not. It works but
it's pretty ugly. I am curious if there's a way to be notified when a
driver is finally bound to a given device? That's what I would need.

This also raises another question on reference counting. Ideally, the
i2c chip drivers shouldn't be allowed to be removed before the v4l
driver itself is (without the i2c chip drivers, the v4l drivers cannot
work properly.) So I would like to increase the reference count to the
i2c chip drivers when they bind to my chips, and decrease it when I
quit. Should I just do a try_module_get(i2c_driver.driver.owner) at a
random time and just hope for the best? Or is there a cleaner way to
express that kind of dependency between drivers?

Thanks,
-- 
Jean Delvare
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ