Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/sys/opencrypto



On Jan 19, 10:37am, Paul Goyette wrote:
} On Sun, 19 Jan 2014, Christos Zoulas wrote:
} > On Jan 19, 10:22am, paul%whooppee.com@localhost (Paul Goyette) wrote:
} >
} > | How about the following changes?
} >
} > You need to handle the regular open too, not justthe get (look for the
} > other fd_clone)
} 
} That's covered in cryptoopen() at line 1060
} 
} > | @@ -143,6 +143,8 @@ static int    cryptoread(dev_t dev, struct
} > |   static int      cryptowrite(dev_t dev, struct uio *uio, int ioflag);
} > |   static int      cryptoselect(dev_t dev, int rw, struct lwp *l);
} > |
} > | +static int       crypto_refcount = 0;    /* Prevent detaching while in 
use */
} > | +
} > |   /* Declaration of cloned-device (per-ctxt) entrypoints */
} > |   static int      cryptof_read(struct file *, off_t *, struct uio *,
} > |       kauth_cred_t, int);
} > | @@ -262,6 +264,7 @@ cryptof_ioctl(struct file *fp, u_long cm
} > |                    */
} > |                   criofcr->sesn = 1;
} > |                   criofcr->requestid = 1;
} > | +         crypto_refcount++;
} > |                   mutex_exit(&crypto_mtx);
} > |                   (void)fd_clone(criofp, criofd, (FREAD|FWRITE),
} > |                                 &cryptofops, criofcr);
} > | @@ -951,6 +954,7 @@ cryptof_close(struct file *fp)
} > |           }
} > |           seldestroy(&fcr->sinfo);
} > |           fp->f_data = NULL;
} > | + crypto_refcount--;
} > |           mutex_exit(&crypto_mtx);
} > |
} > |           pool_put(&fcrpl, fcr);
} > | @@ -1080,6 +1084,7 @@ cryptoopen(dev_t dev, int flag, int mode
} > |            */
} > |           fcr->sesn = 1;
} > |           fcr->requestid = 1;
} > | + crypto_refcount++;
} > |           mutex_exit(&crypto_mtx);
} > |           return fd_clone(fp, fd, flag, &cryptofops, fcr);
} > |   }
} > | @@ -2109,6 +2114,10 @@ int        crypto_detach(device_t, int);
} >
} > It is not just the detach we need to handle, it is the module unload too
} > (look for FINI).
} 
} Handled indirectly.  The MODULE_CMD_FINI calls config_cfdata_detach() 
} which attempts to detach each device instance.  If a detach fails, then 
} config_cfdata_detach fails, and the unload will fail.

     Does this mean that you'll end up with some device instances
detached and not others?

}-- End of excerpt from Paul Goyette


Home | Main Index | Thread Index | Old Index