Bug in devinfo or something wrong with me?
Stefan Farfeleder
stefan at fafoe.narf.at
Mon May 16 12:51:27 GMT 2005
On Mon, May 16, 2005 at 02:11:42PM +0300, Juho Vuori wrote:
> The below included simple program reliably printfs "error 4\n" on
> 5.4-RELEASE. Am I understanding something wrong or is this a bug in
> libdevinfo?
There is indeed a bug in libdevinfo.
> To continue on this however, if you put say sleep(5) between
> devinfo_free() and the second devinfo_init() and manage to change the
> device configuration during the sleep (tested with pluggin in/out a USB
> memory), the program terminates with no errors. I've run into other
> oddities with devinfo as well, but in much more complex situations so
> they might just as well be variations of this simple example.
> if (devinfo_init()) {
devinfo_init() initialises the devinfo_dev tailq, devinfo_generation and
sets devinfo_initted to 1.
> devinfo_free();
devinfo_free() clears devinfo_dev and sets devinfo_initted to 0 but
devinfo_generation keeps its value.
> if (devinfo_init()) {
Now devinfo_dev doesn't get filled because ubus.ub_generation ==
devinfo_generation.
Here is a patch that resets devinfo_generation to 0 in devinfo_free().
The whole file can probably be simplified a bit due to this bug.
Stefan
-------------- next part --------------
Index: devinfo.c
===================================================================
RCS file: /home/ncvs/src/lib/libdevinfo/devinfo.c,v
retrieving revision 1.6
diff -I.svn -u -r1.6 devinfo.c
--- devinfo.c 1 Mar 2005 20:32:05 -0000 1.6
+++ devinfo.c 16 May 2005 12:40:24 -0000
@@ -367,6 +370,7 @@
free(dr);
}
devinfo_initted = 0;
+ devinfo_generation = 0;
}
/*
More information about the freebsd-hackers
mailing list