@@ -317,7 +317,7 @@ spufs_mkdir(struct inode *dir, struct dentry *dentry, unsigned int flags,
317317 return ret ;
318318}
319319
320- static int spufs_context_open (struct dentry * dentry , struct vfsmount * mnt )
320+ static int spufs_context_open (struct path * path )
321321{
322322 int ret ;
323323 struct file * filp ;
@@ -326,11 +326,7 @@ static int spufs_context_open(struct dentry *dentry, struct vfsmount *mnt)
326326 if (ret < 0 )
327327 return ret ;
328328
329- /*
330- * get references for dget and mntget, will be released
331- * in error path of *_open().
332- */
333- filp = dentry_open (dget (dentry ), mntget (mnt ), O_RDONLY , current_cred ());
329+ filp = dentry_open (path , O_RDONLY , current_cred ());
334330 if (IS_ERR (filp )) {
335331 put_unused_fd (ret );
336332 return PTR_ERR (filp );
@@ -452,6 +448,7 @@ spufs_create_context(struct inode *inode, struct dentry *dentry,
452448 int affinity ;
453449 struct spu_gang * gang ;
454450 struct spu_context * neighbor ;
451+ struct path path = {.mnt = mnt , .dentry = dentry };
455452
456453 ret = - EPERM ;
457454 if ((flags & SPU_CREATE_NOSCHED ) &&
@@ -494,7 +491,7 @@ spufs_create_context(struct inode *inode, struct dentry *dentry,
494491 put_spu_context (neighbor );
495492 }
496493
497- ret = spufs_context_open (dentry , mnt );
494+ ret = spufs_context_open (& path );
498495 if (ret < 0 ) {
499496 WARN_ON (spufs_rmdir (inode , dentry ));
500497 if (affinity )
@@ -551,7 +548,7 @@ spufs_mkgang(struct inode *dir, struct dentry *dentry, umode_t mode)
551548 return ret ;
552549}
553550
554- static int spufs_gang_open (struct dentry * dentry , struct vfsmount * mnt )
551+ static int spufs_gang_open (struct path * path )
555552{
556553 int ret ;
557554 struct file * filp ;
@@ -564,7 +561,7 @@ static int spufs_gang_open(struct dentry *dentry, struct vfsmount *mnt)
564561 * get references for dget and mntget, will be released
565562 * in error path of *_open().
566563 */
567- filp = dentry_open (dget ( dentry ), mntget ( mnt ) , O_RDONLY , current_cred ());
564+ filp = dentry_open (path , O_RDONLY , current_cred ());
568565 if (IS_ERR (filp )) {
569566 put_unused_fd (ret );
570567 return PTR_ERR (filp );
@@ -579,13 +576,14 @@ static int spufs_create_gang(struct inode *inode,
579576 struct dentry * dentry ,
580577 struct vfsmount * mnt , umode_t mode )
581578{
579+ struct path path = {.mnt = mnt , .dentry = dentry };
582580 int ret ;
583581
584582 ret = spufs_mkgang (inode , dentry , mode & S_IRWXUGO );
585583 if (ret )
586584 goto out ;
587585
588- ret = spufs_gang_open (dentry , mnt );
586+ ret = spufs_gang_open (& path );
589587 if (ret < 0 ) {
590588 int err = simple_rmdir (inode , dentry );
591589 WARN_ON (err );
0 commit comments