--- util-linux-2.12q/mount/swapon.c
+++ util-linux-2.12q/mount/swapon.c
@@ -160,10 +160,19 @@
 static int
 is_in_proc_swaps(const char *fname) {
 	int i;
+	struct stat stfname, stswapFile;
 
-	for (i = 0; i < numSwaps; i++)
-		if (swapFiles[i] && !strcmp(fname, swapFiles[i]))
+	stat(fname, &stfname);
+
+	for (i = 0; i < numSwaps; i++) {
+		if(S_ISBLK(stfname.st_mode)) {
+			stat(swapFiles[i], &stswapFile);
+			if(S_ISBLK(stswapFile.st_mode))
+				if(stfname.st_rdev == stswapFile.st_rdev)
+					return 1;
+		} else if (swapFiles[i] && !strcmp(fname, swapFiles[i]))
 			return 1;
+	}
 	return 0;
 }