ovl: check whiteout on lowest layer as well

Not checking whiteouts on lowest layer was an optimization (there's nothing
to white out there), but it could result in inconsitent behavior when a
layer previously used as upper/middle is later used as lowest. 

Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c
index f72b82f..5dbc678 100644
--- a/fs/overlayfs/super.c
+++ b/fs/overlayfs/super.c
@@ -350,16 +350,12 @@
 		if (IS_ERR(this))
 			goto out;
 
-		/*
-		 * If this is not the lowermost layer, check whiteout and opaque
-		 * directory.
-		 */
-		if (poe->numlower && this) {
+		if (this) {
 			if (ovl_is_whiteout(this)) {
 				dput(this);
 				this = NULL;
 				upperopaque = true;
-			} else if (ovl_is_opaquedir(this)) {
+			} else if (poe->numlower && ovl_is_opaquedir(this)) {
 				upperopaque = true;
 			}
 		}
@@ -384,20 +380,17 @@
 			goto out_put;
 		if (!this)
 			continue;
-
-		/*
-		 * If this is not the lowermost layer, check whiteout and opaque
-		 * directory.
-		 */
-		if (i < poe->numlower - 1) {
-			if (ovl_is_whiteout(this)) {
-				dput(this);
-				break;
-			} else if (ovl_is_opaquedir(this)) {
-				opaque = true;
-			}
+		if (ovl_is_whiteout(this)) {
+			dput(this);
+			break;
 		}
 		/*
+		 * Only makes sense to check opaque dir if this is not the
+		 * lowermost layer.
+		 */
+		if (i < poe->numlower - 1 && ovl_is_opaquedir(this))
+			opaque = true;
+		/*
 		 * If this is a non-directory then stop here.
 		 *
 		 * FIXME: check for opaqueness maybe better done in remove code.