All of lore.kernel.org
 help / color / mirror / Atom feed
* LVM2 ./WHATS_NEW lib/activate/fs.c
@ 2012-02-08 10:43 zkabelac
  2012-02-12 20:11 ` Alasdair G Kergon
  0 siblings, 1 reply; 2+ messages in thread
From: zkabelac @ 2012-02-08 10:43 UTC (permalink / raw)
  To: lvm-devel

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	zkabelac at sourceware.org	2012-02-08 10:43:43

Modified files:
	.              : WHATS_NEW 
	lib/activate   : fs.c 

Log message:
	Check result of lstat
	
	If lstat returns errno different from ENOENT, do not use the content of
	struct stat 'buf'.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.2257&r2=1.2258
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/activate/fs.c.diff?cvsroot=lvm2&r1=1.64&r2=1.65

--- LVM2/WHATS_NEW	2012/02/01 20:13:44	1.2257
+++ LVM2/WHATS_NEW	2012/02/08 10:43:42	1.2258
@@ -1,5 +1,6 @@
 Version 2.02.91 -
 ===================================
+  Do not use lstat() results when failed in _rm_link().
   Remove a "waiting for another thread" log message from dmeventd plugins.
 
 Version 2.02.90 - 1st February 2012
--- LVM2/lib/activate/fs.c	2011/11/18 19:31:09	1.64
+++ LVM2/lib/activate/fs.c	2012/02/08 10:43:42	1.65
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.
- * Copyright (C) 2004-2011 Red Hat, Inc. All rights reserved.
+ * Copyright (C) 2004-2012 Red Hat, Inc. All rights reserved.
  *
  * This file is part of LVM2.
  *
@@ -225,6 +225,7 @@
 static int _rm_link(const char *dev_dir, const char *vg_name,
 		    const char *lv_name, int check_udev)
 {
+	int r;
 	struct stat buf;
 	static char lv_path[PATH_MAX];
 
@@ -234,14 +235,14 @@
 		return 0;
 	}
 
-	if (lstat(lv_path, &buf) && errno == ENOENT)
+	if ((r = lstat(lv_path, &buf)) && errno == ENOENT)
 		return 1;
 	else if (dm_udev_get_sync_support() && udev_checking() && check_udev)
 		log_warn("The link %s should have been removed by udev "
 			 "but it is still present. Falling back to "
 			 "direct link removal.", lv_path);
 
-	if (!S_ISLNK(buf.st_mode)) {
+	if (r || !S_ISLNK(buf.st_mode)) {
 		log_error("%s not symbolic link - not removing", lv_path);
 		return 0;
 	}



^ permalink raw reply	[flat|nested] 2+ messages in thread

* LVM2 ./WHATS_NEW lib/activate/fs.c
  2012-02-08 10:43 LVM2 ./WHATS_NEW lib/activate/fs.c zkabelac
@ 2012-02-12 20:11 ` Alasdair G Kergon
  0 siblings, 0 replies; 2+ messages in thread
From: Alasdair G Kergon @ 2012-02-12 20:11 UTC (permalink / raw)
  To: lvm-devel

On Wed, Feb 08, 2012 at 10:43:43AM -0000, zkabelac at sourceware.org wrote:
> +	if ((r = lstat(lv_path, &buf)) && errno == ENOENT)

> +	if (r || !S_ISLNK(buf.st_mode)) {
>  		log_error("%s not symbolic link - not removing", lv_path);

So if you get, say ENOMEM, you'll tell the user "not symbolic link"?
Sigh.

Alasdair



^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2012-02-12 20:11 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-02-08 10:43 LVM2 ./WHATS_NEW lib/activate/fs.c zkabelac
2012-02-12 20:11 ` Alasdair G Kergon

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.