summaryrefslogtreecommitdiffstats
path: root/shlibs/blkid/src/probe.c
diff options
context:
space:
mode:
authorKarel Zak2010-11-23 19:49:58 +0100
committerKarel Zak2010-11-23 19:56:57 +0100
commite8fc977aba09ddbd89b25276fd777c3f0eef9299 (patch)
tree6d397f0e4b8ea68f17952d4b9ae03b17db6aba14 /shlibs/blkid/src/probe.c
parentmount: mark die() as nonreturn (diff)
downloadkernel-qcow2-util-linux-e8fc977aba09ddbd89b25276fd777c3f0eef9299.tar.gz
kernel-qcow2-util-linux-e8fc977aba09ddbd89b25276fd777c3f0eef9299.tar.xz
kernel-qcow2-util-linux-e8fc977aba09ddbd89b25276fd777c3f0eef9299.zip
libblkid: cache is incorrectly revalidated
for example: # echo "password" | cryptsetup luksFormat /dev/loop7 # blkid /dev/loop7 /dev/loop7: UUID="09240a80-1cf1-456d-9a6e-a35b39dc1f2b" TYPE="crypto_LUKS" # pvcreate -ff /dev/loop7 # blkid /dev/loop7 # the second blkid call has to return info about LVM. Reported-by: Milan Broz <mbroz@redhat.com> Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'shlibs/blkid/src/probe.c')
-rw-r--r--shlibs/blkid/src/probe.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/shlibs/blkid/src/probe.c b/shlibs/blkid/src/probe.c
index 3698b99b3..33e2fe130 100644
--- a/shlibs/blkid/src/probe.c
+++ b/shlibs/blkid/src/probe.c
@@ -431,14 +431,13 @@ int __blkid_probe_invert_filter(blkid_probe pr, int chain)
struct blkid_chain *chn;
unsigned long *fltr;
- fltr = blkid_probe_get_filter(pr, chain, FALSE);
- if (!fltr)
- return -1;
-
chn = &pr->chains[chain];
+ if (!chn->driver->has_fltr || !chn->fltr)
+ return -1;
+
for (i = 0; i < blkid_bmp_nwords(chn->driver->nidinfos); i++)
- fltr[i] = ~fltr[i];
+ chn->fltr[i] = ~chn->fltr[i];
DBG(DEBUG_LOWPROBE, printf("probing filter inverted\n"));
/* blkid_probe_dump_filter(pr, chain); */