Index: kernel/linux_usb.c =================================================================== --- kernel/linux_usb.c (revision 1629) +++ kernel/linux_usb.c (working copy) @@ -266,7 +266,7 @@ * This function is the FreeBSD probe and attach callback. *------------------------------------------------------------------------*/ int -usb_linux_probe(uint8_t bus, uint8_t addr, uint8_t index) +usb_linux_probe_p(int *p_bus, int *p_addr, int *p_index) { const struct usb_device_id *id; struct usb_linux_softc *sc; @@ -281,6 +281,9 @@ uint8_t match_bus_addr; uint8_t index_copy; uint8_t device_index; + uint8_t bus = *p_bus; + uint8_t addr = *p_addr; + uint8_t index = *p_index; for (i = 0;; i++) { if (i == ARRAY_SIZE(uls)) @@ -365,9 +368,11 @@ return (-ENXIO); found: + *p_bus = libusb20_dev_get_bus_number(pdev); + *p_addr = libusb20_dev_get_address(pdev); + *p_index = index_copy; #ifdef HAVE_WEBCAMD - if (pidfile_create(libusb20_dev_get_bus_number(pdev), - libusb20_dev_get_address(pdev), index_copy)) { + if (pidfile_create(*p_bus, *p_addr, index_copy)) { fprintf(stderr, "Webcamd is already running for " "ugen%d.%d.%d\n", libusb20_dev_get_bus_number(pdev), Index: kernel/linux_usb.h =================================================================== --- kernel/linux_usb.h (revision 1629) +++ kernel/linux_usb.h (working copy) @@ -583,7 +583,7 @@ int usb_deregister(struct usb_driver *drv); struct usb_linux_softc *usb_linux2usb(int fd); -int usb_linux_probe(uint8_t bus, uint8_t addr, uint8_t index); +int usb_linux_probe_p(int *pbus, int *paddr, int *pindex); int usb_linux_detach(int fd); int usb_linux_suspend(int fd); int usb_linux_resume(int fd); Index: webcamd.c =================================================================== --- webcamd.c (revision 1629) +++ webcamd.c (working copy) @@ -462,7 +462,7 @@ } linux_init(); - f_usb = usb_linux_probe(u_unit, u_addr, u_index); + f_usb = usb_linux_probe_p(&u_unit, &u_addr, &u_index); if (f_usb < 0) v4b_errx(1, "Cannot find USB device");