libpciaccess-fd-cache.patch is not making sense because it caches the open flag (read only or write only). If your first call is a read to the config space, it creates a fd with rdeadonly flag and cache it. Then if you try to write to config space of the same device, it reuses the same fd and the write call fail with a EBADF. If you want to cache fd handle, it should be easier to open with both read and write flags.
Right you are. Fixed in 0.10.3-2, thanks.
libpciaccess-0.10.3-2.fc9 has been submitted as an update for Fedora 9
libpciaccess-0.10.3-2.fc9 has been pushed to the Fedora 9 stable repository. If problems still persist, please make note of it in this bug report.