super.c (3bf3e21c15d4386a5f15118ec39bbc1b67ea5759) super.c (a8b0026847b8c43445c921ad2c85521c92eb175f)
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 *
4 * Copyright (C) 2011 Novell Inc.
5 */
6
7#include <uapi/linux/magic.h>
8#include <linux/fs.h>

--- 425 unchanged lines hidden (view full) ---

434}
435
436/* Workdir should not be subdir of upperdir and vice versa */
437static bool ovl_workdir_ok(struct dentry *workdir, struct dentry *upperdir)
438{
439 bool ok = false;
440
441 if (workdir != upperdir) {
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 *
4 * Copyright (C) 2011 Novell Inc.
5 */
6
7#include <uapi/linux/magic.h>
8#include <linux/fs.h>

--- 425 unchanged lines hidden (view full) ---

434}
435
436/* Workdir should not be subdir of upperdir and vice versa */
437static bool ovl_workdir_ok(struct dentry *workdir, struct dentry *upperdir)
438{
439 bool ok = false;
440
441 if (workdir != upperdir) {
442 ok = (lock_rename(workdir, upperdir) == NULL);
443 unlock_rename(workdir, upperdir);
442 struct dentry *trap = lock_rename(workdir, upperdir);
443 if (!IS_ERR(trap))
444 unlock_rename(workdir, upperdir);
445 ok = (trap == NULL);
444 }
445 return ok;
446}
447
448static int ovl_setup_trap(struct super_block *sb, struct dentry *dir,
449 struct inode **ptrap, const char *name)
450{
451 struct inode *trap;

--- 1080 unchanged lines hidden ---
446 }
447 return ok;
448}
449
450static int ovl_setup_trap(struct super_block *sb, struct dentry *dir,
451 struct inode **ptrap, const char *name)
452{
453 struct inode *trap;

--- 1080 unchanged lines hidden ---