changeset 10975:9dd13a7cd2e3

6850995 hald dumped core 6898374 incorrect USB webcam video* devlink remove rules cause dangling links
author Raymond Chen <Raymond.Chen@Sun.COM>
date Fri, 06 Nov 2009 11:19:08 +0800
parents 32d689ba6466
children 03a10dbb75a3
files usr/src/cmd/devfsadm/usb_link.c usr/src/cmd/hal/hald/solaris/devinfo_usb.c
diffstat 2 files changed, 7 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/cmd/devfsadm/usb_link.c	Thu Nov 05 18:44:56 2009 -0800
+++ b/usr/src/cmd/devfsadm/usb_link.c	Fri Nov 06 11:19:08 2009 +0800
@@ -116,9 +116,9 @@
 			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,
+	{ "usb", USB_LINK_RE_VIDEO2, RM_POST | RM_HOT | RM_ALWAYS, ILEVEL_0,
 			devfsadm_rm_all },
-	{ "usb", USB_LINK_RE_VIDEO2, RM_POST | RM_HOT | RM_ALWAYS, ILEVEL_0,
+	{ "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 },
--- a/usr/src/cmd/hal/hald/solaris/devinfo_usb.c	Thu Nov 05 18:44:56 2009 -0800
+++ b/usr/src/cmd/hal/hald/solaris/devinfo_usb.c	Fri Nov 06 11:19:08 2009 +0800
@@ -462,7 +462,7 @@
 			 * 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 @@
 	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 @@
 	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 @@
 	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;