svn commit: r278320 - in head: contrib/mdocml lib lib/libdevctl share/mk sys/dev/acpica sys/dev/pci sys/kern sys/sys usr.sbin usr.sbin/devctl
Mateusz Guzik
mjguzik at gmail.com
Wed Feb 25 23:40:12 UTC 2015
On Fri, Feb 06, 2015 at 04:09:02PM +0000, John Baldwin wrote:
> Author: jhb
> Date: Fri Feb 6 16:09:01 2015
> New Revision: 278320
> URL: https://svnweb.freebsd.org/changeset/base/278320
>
> Log:
> Add a new device control utility for new-bus devices called devctl. This
> allows the user to request administrative changes to individual devices
[..]
> +static int
> +devctl2_ioctl(struct cdev *cdev, u_long cmd, caddr_t data, int fflag,
> + struct thread *td)
> +{
> + struct devreq *req;
> + device_t dev;
> + int error, old;
> +
> + /* Locate the device to control. */
> + mtx_lock(&Giant);
> + req = (struct devreq *)data;
[..]
> + switch (cmd) {
[..]
> + case DEV_SET_DRIVER: {
> + devclass_t dc;
> + char driver[128];
> +
> + error = copyinstr(req->dr_data, driver, sizeof(driver), NULL);
[..]
> + if (!driver_exists(dev->parent, driver)) {
> + error = ENOENT;
> + break;
> + }
[..]
> + }
> + mtx_unlock(&Giant);
> + return (error);
> +}
I only skimmed thourgh this, will not a page fault drop + reacquire Giant lock?
iow, would not it be better to copy prior to taking the lock?
--
Mateusz Guzik <mjguzik gmail.com>
More information about the svn-src-head
mailing list