diff options
author | Raymond Chen <Raymond.Chen@Sun.COM> | 2009-11-06 11:19:08 +0800 |
---|---|---|
committer | Raymond Chen <Raymond.Chen@Sun.COM> | 2009-11-06 11:19:08 +0800 |
commit | 3fb52c733c5435ce279a4641b57941b1befa5c9f (patch) | |
tree | c918111e3488c530b9761bf96b98d7fb7660ff42 | |
parent | a15215608b8bd90f714f6db21ee623b584607cb6 (diff) | |
download | illumos-joyent-3fb52c733c5435ce279a4641b57941b1befa5c9f.tar.gz |
6850995 hald dumped core
6898374 incorrect USB webcam video* devlink remove rules cause dangling links
-rw-r--r-- | usr/src/cmd/devfsadm/usb_link.c | 4 | ||||
-rw-r--r-- | usr/src/cmd/hal/hald/solaris/devinfo_usb.c | 9 |
2 files changed, 7 insertions, 6 deletions
diff --git a/usr/src/cmd/devfsadm/usb_link.c b/usr/src/cmd/devfsadm/usb_link.c index a93c1b9eb3..d47c4931eb 100644 --- a/usr/src/cmd/devfsadm/usb_link.c +++ b/usr/src/cmd/devfsadm/usb_link.c @@ -116,10 +116,10 @@ static devfsadm_remove_t usb_remove_cbt[] = { ILEVEL_0, devfsadm_rm_all }, { "usb", USB_LINK_RE_DDIVS_USBC, RM_POST | RM_HOT | RM_ALWAYS, ILEVEL_0, devfsadm_rm_all }, - { "usb", USB_LINK_RE_VIDEO, RM_POST | RM_HOT | RM_ALWAYS, ILEVEL_0, - devfsadm_rm_all }, { "usb", USB_LINK_RE_VIDEO2, RM_POST | RM_HOT | RM_ALWAYS, ILEVEL_0, devfsadm_rm_all }, + { "usb", USB_LINK_RE_VIDEO, RM_POST | RM_HOT | RM_ALWAYS, ILEVEL_0, + devfsadm_rm_all }, { "usb", USB_LINK_RE_DEVICE, RM_POST | RM_HOT, ILEVEL_0, devfsadm_rm_all }, { "usb", USB_LINK_RE_HID, RM_POST | RM_HOT | RM_ALWAYS, ILEVEL_0, diff --git a/usr/src/cmd/hal/hald/solaris/devinfo_usb.c b/usr/src/cmd/hal/hald/solaris/devinfo_usb.c index 8098ec78b9..a3fce2cad0 100644 --- a/usr/src/cmd/hal/hald/solaris/devinfo_usb.c +++ b/usr/src/cmd/hal/hald/solaris/devinfo_usb.c @@ -462,7 +462,7 @@ get_dev_link_path(di_node_t node, char *nodetype, char *re, char **devlink, char * situation, we will read the devlink name from * /dev/usb directory. */ - if ((*devlink == NULL) && + if ((*devlink == NULL) && (re != NULL) && ((strstr(re, "hid") != NULL) || (strstr(re, "video") != NULL))) { *devlink = get_usb_devlink(*minor_path, "/dev/usb/"); } @@ -494,7 +494,7 @@ devinfo_usb_video4linux_add(HalDevice *usbd, di_node_t node) char *s; get_dev_link_path(node, "usb_video", - "^usb/video+", &devlink, &minor_path, &minor_name); + "^usb/video[0-9]+", &devlink, &minor_path, &minor_name); if ((minor_path == NULL) || (devlink == NULL)) { @@ -555,7 +555,7 @@ devinfo_usb_input_add(HalDevice *usbd, di_node_t node) char udi[HAL_PATH_MAX]; get_dev_link_path(node, "ddi_pseudo", - "^usb/hid+", &devlink, &minor_path, &minor_name); + "^usb/hid[0-9]+", &devlink, &minor_path, &minor_name); if ((minor_path == NULL) || (devlink == NULL)) { @@ -629,7 +629,8 @@ devinfo_usb_scsa2usb_add(HalDevice *usbd, di_node_t node) char *devlink = NULL; char udi[HAL_PATH_MAX]; - get_dev_link_path(node, "ddi_ctl:devctl:scsi", NULL, &devlink, &minor_path, &minor_name); + get_dev_link_path(node, "ddi_ctl:devctl:scsi", + "^usb/mass-storage[0-9]+", &devlink, &minor_path, &minor_name); if ((devlink == NULL) || (minor_path == NULL)) { goto out; |