Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 96d5e716 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "cope with potentially long ->d_dname() output for shmem/hugetlb"

parents a17b59e9 2f4ffad1
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -2724,6 +2724,17 @@ char *dynamic_dname(struct dentry *dentry, char *buffer, int buflen,
	return memcpy(buffer, temp, sz);
}

char *simple_dname(struct dentry *dentry, char *buffer, int buflen)
{
	char *end = buffer + buflen;
	/* these dentries are never renamed, so d_lock is not needed */
	if (prepend(&end, &buflen, " (deleted)", 11) ||
	    prepend_name(&end, &buflen, &dentry->d_name) ||
	    prepend(&end, &buflen, "/", 1))  
		end = ERR_PTR(-ENAMETOOLONG);
	return end;  
}

/*
 * Write full pathname from the root of the filesystem into the buffer.
 */
+1 −7
Original line number Diff line number Diff line
@@ -916,14 +916,8 @@ static int get_hstate_idx(int page_size_log)
	return h - hstates;
}

static char *hugetlb_dname(struct dentry *dentry, char *buffer, int buflen)
{
	return dynamic_dname(dentry, buffer, buflen, "/%s (deleted)",
				dentry->d_name.name);
}

static struct dentry_operations anon_ops = {
	.d_dname = hugetlb_dname
	.d_dname = simple_dname
};

/*
+1 −0
Original line number Diff line number Diff line
@@ -332,6 +332,7 @@ extern int d_validate(struct dentry *, struct dentry *);
 * helper function for dentry_operations.d_dname() members
 */
extern char *dynamic_dname(struct dentry *, char *, int, const char *, ...);
extern char *simple_dname(struct dentry *, char *, int);

extern char *__d_path(const struct path *, const struct path *, char *, int);
extern char *d_absolute_path(const struct path *, char *, int);
+1 −7
Original line number Diff line number Diff line
@@ -2879,14 +2879,8 @@ EXPORT_SYMBOL_GPL(shmem_truncate_range);

/* common code */

static char *shmem_dname(struct dentry *dentry, char *buffer, int buflen)
{
	return dynamic_dname(dentry, buffer, buflen, "/%s (deleted)",
				dentry->d_name.name);
}

static struct dentry_operations anon_ops = {
	.d_dname = shmem_dname
	.d_dname = simple_dname
};

/**