|
@@ -553,7 +553,7 @@ static int cachefiles_daemon_tag(struct cachefiles_cache *cache, char *args)
|
|
|
static int cachefiles_daemon_cull(struct cachefiles_cache *cache, char *args)
|
|
|
{
|
|
|
struct fs_struct *fs;
|
|
|
- struct dentry *dir;
|
|
|
+ struct path path;
|
|
|
const struct cred *saved_cred;
|
|
|
int ret;
|
|
|
|
|
@@ -575,22 +575,23 @@ static int cachefiles_daemon_cull(struct cachefiles_cache *cache, char *args)
|
|
|
/* extract the directory dentry from the cwd */
|
|
|
fs = current->fs;
|
|
|
read_lock(&fs->lock);
|
|
|
- dir = dget(fs->pwd.dentry);
|
|
|
+ path = fs->pwd;
|
|
|
+ path_get(&path);
|
|
|
read_unlock(&fs->lock);
|
|
|
|
|
|
- if (!S_ISDIR(dir->d_inode->i_mode))
|
|
|
+ if (!S_ISDIR(path.dentry->d_inode->i_mode))
|
|
|
goto notdir;
|
|
|
|
|
|
cachefiles_begin_secure(cache, &saved_cred);
|
|
|
- ret = cachefiles_cull(cache, dir, args);
|
|
|
+ ret = cachefiles_cull(cache, path.dentry, args);
|
|
|
cachefiles_end_secure(cache, saved_cred);
|
|
|
|
|
|
- dput(dir);
|
|
|
+ path_put(&path);
|
|
|
_leave(" = %d", ret);
|
|
|
return ret;
|
|
|
|
|
|
notdir:
|
|
|
- dput(dir);
|
|
|
+ path_put(&path);
|
|
|
kerror("cull command requires dirfd to be a directory");
|
|
|
return -ENOTDIR;
|
|
|
|
|
@@ -629,7 +630,7 @@ inval:
|
|
|
static int cachefiles_daemon_inuse(struct cachefiles_cache *cache, char *args)
|
|
|
{
|
|
|
struct fs_struct *fs;
|
|
|
- struct dentry *dir;
|
|
|
+ struct path path;
|
|
|
const struct cred *saved_cred;
|
|
|
int ret;
|
|
|
|
|
@@ -651,22 +652,23 @@ static int cachefiles_daemon_inuse(struct cachefiles_cache *cache, char *args)
|
|
|
/* extract the directory dentry from the cwd */
|
|
|
fs = current->fs;
|
|
|
read_lock(&fs->lock);
|
|
|
- dir = dget(fs->pwd.dentry);
|
|
|
+ path = fs->pwd;
|
|
|
+ path_get(&path);
|
|
|
read_unlock(&fs->lock);
|
|
|
|
|
|
- if (!S_ISDIR(dir->d_inode->i_mode))
|
|
|
+ if (!S_ISDIR(path.dentry->d_inode->i_mode))
|
|
|
goto notdir;
|
|
|
|
|
|
cachefiles_begin_secure(cache, &saved_cred);
|
|
|
- ret = cachefiles_check_in_use(cache, dir, args);
|
|
|
+ ret = cachefiles_check_in_use(cache, path.dentry, args);
|
|
|
cachefiles_end_secure(cache, saved_cred);
|
|
|
|
|
|
- dput(dir);
|
|
|
+ path_put(&path);
|
|
|
//_leave(" = %d", ret);
|
|
|
return ret;
|
|
|
|
|
|
notdir:
|
|
|
- dput(dir);
|
|
|
+ path_put(&path);
|
|
|
kerror("inuse command requires dirfd to be a directory");
|
|
|
return -ENOTDIR;
|
|
|
|