[libvirt] [PATCH] Make check for /dev/loop device names stricter to avoid /dev/loop-control

From: "Daniel P. Berrange" <berrange@redhat.com> Recentish (2011) kernels introduced a new device called /dev/loop-control, which causes libvirt's detection of loop devices to get confused since it only checks for a prefix of 'loop'. Also check that the next character is a digit Signed-off-by: Daniel P. Berrange <berrange@redhat.com> --- src/util/virfile.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/util/virfile.c b/src/util/virfile.c index 8f0eec3..2b07ac9 100644 --- a/src/util/virfile.c +++ b/src/util/virfile.c @@ -546,7 +546,11 @@ static int virFileLoopDeviceOpen(char **dev_name) errno = 0; while ((de = readdir(dh)) != NULL) { - if (!STRPREFIX(de->d_name, "loop")) + /* Checking 'loop' prefix is insufficient, since + * new kernels have a dev named 'loop-control' + */ + if (!STRPREFIX(de->d_name, "loop") || + !c_isdigit(de->d_name[4])) continue; if (virAsprintf(&looppath, "/dev/%s", de->d_name) < 0) -- 1.8.3.1

On 08/09/2013 10:45 AM, Daniel P. Berrange wrote:
From: "Daniel P. Berrange" <berrange@redhat.com>
Recentish (2011) kernels introduced a new device called /dev/loop-control, which causes libvirt's detection of loop devices to get confused since it only checks for a prefix of 'loop'. Also check that the next character is a digit
Signed-off-by: Daniel P. Berrange <berrange@redhat.com> --- src/util/virfile.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
ACK. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
participants (2)
-
Daniel P. Berrange
-
Eric Blake