|
@@ -1225,7 +1225,7 @@ failed:
|
|
|
|
|
|
struct page *shmem_nopage(struct vm_area_struct *vma, unsigned long address, int *type)
|
|
struct page *shmem_nopage(struct vm_area_struct *vma, unsigned long address, int *type)
|
|
{
|
|
{
|
|
- struct inode *inode = vma->vm_file->f_dentry->d_inode;
|
|
|
|
|
|
+ struct inode *inode = vma->vm_file->f_path.dentry->d_inode;
|
|
struct page *page = NULL;
|
|
struct page *page = NULL;
|
|
unsigned long idx;
|
|
unsigned long idx;
|
|
int error;
|
|
int error;
|
|
@@ -1248,7 +1248,7 @@ static int shmem_populate(struct vm_area_struct *vma,
|
|
unsigned long addr, unsigned long len,
|
|
unsigned long addr, unsigned long len,
|
|
pgprot_t prot, unsigned long pgoff, int nonblock)
|
|
pgprot_t prot, unsigned long pgoff, int nonblock)
|
|
{
|
|
{
|
|
- struct inode *inode = vma->vm_file->f_dentry->d_inode;
|
|
|
|
|
|
+ struct inode *inode = vma->vm_file->f_path.dentry->d_inode;
|
|
struct mm_struct *mm = vma->vm_mm;
|
|
struct mm_struct *mm = vma->vm_mm;
|
|
enum sgp_type sgp = nonblock? SGP_QUICK: SGP_CACHE;
|
|
enum sgp_type sgp = nonblock? SGP_QUICK: SGP_CACHE;
|
|
unsigned long size;
|
|
unsigned long size;
|
|
@@ -1293,14 +1293,14 @@ static int shmem_populate(struct vm_area_struct *vma,
|
|
#ifdef CONFIG_NUMA
|
|
#ifdef CONFIG_NUMA
|
|
int shmem_set_policy(struct vm_area_struct *vma, struct mempolicy *new)
|
|
int shmem_set_policy(struct vm_area_struct *vma, struct mempolicy *new)
|
|
{
|
|
{
|
|
- struct inode *i = vma->vm_file->f_dentry->d_inode;
|
|
|
|
|
|
+ struct inode *i = vma->vm_file->f_path.dentry->d_inode;
|
|
return mpol_set_shared_policy(&SHMEM_I(i)->policy, vma, new);
|
|
return mpol_set_shared_policy(&SHMEM_I(i)->policy, vma, new);
|
|
}
|
|
}
|
|
|
|
|
|
struct mempolicy *
|
|
struct mempolicy *
|
|
shmem_get_policy(struct vm_area_struct *vma, unsigned long addr)
|
|
shmem_get_policy(struct vm_area_struct *vma, unsigned long addr)
|
|
{
|
|
{
|
|
- struct inode *i = vma->vm_file->f_dentry->d_inode;
|
|
|
|
|
|
+ struct inode *i = vma->vm_file->f_path.dentry->d_inode;
|
|
unsigned long idx;
|
|
unsigned long idx;
|
|
|
|
|
|
idx = ((addr - vma->vm_start) >> PAGE_SHIFT) + vma->vm_pgoff;
|
|
idx = ((addr - vma->vm_start) >> PAGE_SHIFT) + vma->vm_pgoff;
|
|
@@ -1310,7 +1310,7 @@ shmem_get_policy(struct vm_area_struct *vma, unsigned long addr)
|
|
|
|
|
|
int shmem_lock(struct file *file, int lock, struct user_struct *user)
|
|
int shmem_lock(struct file *file, int lock, struct user_struct *user)
|
|
{
|
|
{
|
|
- struct inode *inode = file->f_dentry->d_inode;
|
|
|
|
|
|
+ struct inode *inode = file->f_path.dentry->d_inode;
|
|
struct shmem_inode_info *info = SHMEM_I(inode);
|
|
struct shmem_inode_info *info = SHMEM_I(inode);
|
|
int retval = -ENOMEM;
|
|
int retval = -ENOMEM;
|
|
|
|
|
|
@@ -1422,7 +1422,7 @@ shmem_prepare_write(struct file *file, struct page *page, unsigned offset, unsig
|
|
static ssize_t
|
|
static ssize_t
|
|
shmem_file_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
|
|
shmem_file_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
|
|
{
|
|
{
|
|
- struct inode *inode = file->f_dentry->d_inode;
|
|
|
|
|
|
+ struct inode *inode = file->f_path.dentry->d_inode;
|
|
loff_t pos;
|
|
loff_t pos;
|
|
unsigned long written;
|
|
unsigned long written;
|
|
ssize_t err;
|
|
ssize_t err;
|
|
@@ -1442,7 +1442,7 @@ shmem_file_write(struct file *file, const char __user *buf, size_t count, loff_t
|
|
if (err || !count)
|
|
if (err || !count)
|
|
goto out;
|
|
goto out;
|
|
|
|
|
|
- err = remove_suid(file->f_dentry);
|
|
|
|
|
|
+ err = remove_suid(file->f_path.dentry);
|
|
if (err)
|
|
if (err)
|
|
goto out;
|
|
goto out;
|
|
|
|
|
|
@@ -1524,7 +1524,7 @@ out:
|
|
|
|
|
|
static void do_shmem_file_read(struct file *filp, loff_t *ppos, read_descriptor_t *desc, read_actor_t actor)
|
|
static void do_shmem_file_read(struct file *filp, loff_t *ppos, read_descriptor_t *desc, read_actor_t actor)
|
|
{
|
|
{
|
|
- struct inode *inode = filp->f_dentry->d_inode;
|
|
|
|
|
|
+ struct inode *inode = filp->f_path.dentry->d_inode;
|
|
struct address_space *mapping = inode->i_mapping;
|
|
struct address_space *mapping = inode->i_mapping;
|
|
unsigned long index, offset;
|
|
unsigned long index, offset;
|
|
|
|
|
|
@@ -2493,8 +2493,8 @@ struct file *shmem_file_setup(char *name, loff_t size, unsigned long flags)
|
|
d_instantiate(dentry, inode);
|
|
d_instantiate(dentry, inode);
|
|
inode->i_size = size;
|
|
inode->i_size = size;
|
|
inode->i_nlink = 0; /* It is unlinked */
|
|
inode->i_nlink = 0; /* It is unlinked */
|
|
- file->f_vfsmnt = mntget(shm_mnt);
|
|
|
|
- file->f_dentry = dentry;
|
|
|
|
|
|
+ file->f_path.mnt = mntget(shm_mnt);
|
|
|
|
+ file->f_path.dentry = dentry;
|
|
file->f_mapping = inode->i_mapping;
|
|
file->f_mapping = inode->i_mapping;
|
|
file->f_op = &shmem_file_operations;
|
|
file->f_op = &shmem_file_operations;
|
|
file->f_mode = FMODE_WRITE | FMODE_READ;
|
|
file->f_mode = FMODE_WRITE | FMODE_READ;
|