--- zzzz-none-000/linux-4.1.38/fs/overlayfs/readdir.c 2017-01-18 18:48:06.000000000 +0000 +++ bcm63-7582-715/linux-4.1.38/fs/overlayfs/readdir.c 2020-11-25 10:06:48.000000000 +0000 @@ -36,6 +36,9 @@ struct ovl_readdir_data { struct dir_context ctx; +#if defined(CONFIG_BCM_KF_OVERLAYFS_BACKPORTS) + struct dentry *dentry; +#endif bool is_merge; struct rb_root root; struct list_head *list; @@ -205,6 +208,9 @@ struct ovl_cache_entry *p; struct dentry *dentry; const struct cred *old_cred; +#if defined(CONFIG_BCM_KF_OVERLAYFS_BACKPORTS) + old_cred = ovl_override_creds(rdd->dentry->d_sb); +#else struct cred *override_cred; override_cred = prepare_creds(); @@ -216,6 +222,7 @@ */ cap_raise(override_cred->cap_effective, CAP_DAC_OVERRIDE); old_cred = override_creds(override_cred); +#endif err = mutex_lock_killable(&dir->d_inode->i_mutex); if (!err) { @@ -231,7 +238,9 @@ mutex_unlock(&dir->d_inode->i_mutex); } revert_creds(old_cred); +#if !defined(CONFIG_BCM_KF_OVERLAYFS_BACKPORTS) put_cred(override_cred); +#endif return err; } @@ -287,6 +296,9 @@ struct path realpath; struct ovl_readdir_data rdd = { .ctx.actor = ovl_fill_merge, +#if defined(CONFIG_BCM_KF_OVERLAYFS_BACKPORTS) + .dentry = dentry, +#endif .list = list, .root = RB_ROOT, .is_merge = false,