[Linux-diag-devel] [PATCH] sysfs_get_class_devices returns incomplete dlist
Brought to you by:
hegdevasant,
mananth
From: Chris W. <cwi...@fa...> - 2006-05-10 15:00:32
|
Greetings. Apologies if this fix has already been submitted. I discovered recently that the call to sysfs_get_class_devices was returning a list of devices that omitted devices that had matching prefixes but were not of the same length. For example, if I have: / # ls -l /sys/block/ drwxr-xr-x 2 0 0 0 May 10 07:52 dm-0 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-1 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-10 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-11 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-12 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-13 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-14 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-15 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-16 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-17 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-18 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-19 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-2 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-20 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-21 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-22 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-23 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-24 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-25 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-26 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-27 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-28 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-29 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-3 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-30 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-31 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-32 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-33 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-34 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-35 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-36 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-4 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-5 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-6 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-7 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-8 drwxr-xr-x 2 0 0 0 May 10 07:52 dm-9 The dlist returned from sysfs_get_class_devices would have omitted dm-1, dm-2, and dm-3. Here is the patch against sysfsutils-2.0.0 for your consideration. Regards, Chris --- sysfs_class.c 2005-12-07 06:28:18.000000000 -0500 +++ /sandbox/current/dom0/sysfsutils/lib/sysfs_class.c 2006-05-10 09:53:53.000000000 -0400 @@ -65,8 +65,7 @@ if (!a || !b) return 0; - if (strncmp((char *)a, ((struct sysfs_class_device *)b)->name, - strlen((char *)a)) == 0) + if (strcmp((char *)a, ((struct sysfs_class_device *)b)->name) == 0) return 1; return 0; |