LINUX_RELEASE?=1
-LINUX_VERSION-4.4 = .150
+LINUX_VERSION-4.4 = .153
-LINUX_KERNEL_HASH-4.4.146 = 8817c2b83ebdba9aed5ec13a309bfd8f86e9c1f86261e1e644cf65616783fabe
-LINUX_KERNEL_HASH-4.4.150 = 500d994aaedee883ef8bcf1eec49a3cd7026c895c3591ad27d0d65dbff327f35
+LINUX_KERNEL_HASH-4.4.153 = e2b8bcbf5d0f70ce90fb4b19407331e6d31cd0700fa2d1bec32c4659e7fcbba4
ifdef KERNEL_PATCHVER
LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER)))
--- a/fs/overlayfs/overlayfs.h
+++ b/fs/overlayfs/overlayfs.h
-@@ -164,6 +164,8 @@ extern const struct file_operations ovl_
- int ovl_check_empty_dir(struct dentry *dentry, struct list_head *list);
+@@ -165,6 +165,8 @@ int ovl_check_empty_dir(struct dentry *d
void ovl_cleanup_whiteouts(struct dentry *upper, struct list_head *list);
void ovl_cache_free(struct list_head *list);
+ int ovl_check_d_type_supported(struct path *realpath);
+void ovl_workdir_cleanup(struct inode *dir, struct vfsmount *mnt,
-+ struct dentry *dentry, int level);
++ struct dentry *dentry, int level);
/* inode.c */
int ovl_setattr(struct dentry *dentry, struct iattr *attr);
--- a/fs/overlayfs/readdir.c
+++ b/fs/overlayfs/readdir.c
-@@ -247,7 +247,7 @@ static inline int ovl_dir_read(struct pa
+@@ -248,7 +248,7 @@ static inline int ovl_dir_read(struct pa
err = rdd->err;
} while (!err && rdd->count);
err = ovl_check_whiteouts(realpath->dentry, rdd);
fput(realfile);
-@@ -573,3 +573,64 @@ void ovl_cleanup_whiteouts(struct dentry
- }
- mutex_unlock(&upper->d_inode->i_mutex);
+@@ -610,3 +610,64 @@ int ovl_check_d_type_supported(struct pa
+
+ return rdd.d_type_supported;
}
+
+static void ovl_workdir_cleanup_recurse(struct path *path, int level)