Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

VFS: assorted weird filesystems: d_inode() annotations

Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

authored by

David Howells and committed by
Al Viro
75c3cfa8 2b0143b5

+106 -106
+1 -1
arch/ia64/kernel/perfmon.c
··· 2159 2159 static char *pfmfs_dname(struct dentry *dentry, char *buffer, int buflen) 2160 2160 { 2161 2161 return dynamic_dname(dentry, buffer, buflen, "pfm:[%lu]", 2162 - dentry->d_inode->i_ino); 2162 + d_inode(dentry)->i_ino); 2163 2163 } 2164 2164 2165 2165 static const struct dentry_operations pfmfs_dentry_operations = {
+11 -11
arch/powerpc/platforms/cell/spufs/inode.c
··· 111 111 static int 112 112 spufs_setattr(struct dentry *dentry, struct iattr *attr) 113 113 { 114 - struct inode *inode = dentry->d_inode; 114 + struct inode *inode = d_inode(dentry); 115 115 116 116 if ((attr->ia_valid & ATTR_SIZE) && 117 117 (attr->ia_size != inode->i_size)) ··· 163 163 { 164 164 struct dentry *dentry, *tmp; 165 165 166 - mutex_lock(&dir->d_inode->i_mutex); 166 + mutex_lock(&d_inode(dir)->i_mutex); 167 167 list_for_each_entry_safe(dentry, tmp, &dir->d_subdirs, d_child) { 168 168 spin_lock(&dentry->d_lock); 169 - if (!(d_unhashed(dentry)) && dentry->d_inode) { 169 + if (!(d_unhashed(dentry)) && d_really_is_positive(dentry)) { 170 170 dget_dlock(dentry); 171 171 __d_drop(dentry); 172 172 spin_unlock(&dentry->d_lock); 173 - simple_unlink(dir->d_inode, dentry); 173 + simple_unlink(d_inode(dir), dentry); 174 174 /* XXX: what was dcache_lock protecting here? Other 175 175 * filesystems (IB, configfs) release dcache_lock 176 176 * before unlink */ ··· 180 180 } 181 181 } 182 182 shrink_dcache_parent(dir); 183 - mutex_unlock(&dir->d_inode->i_mutex); 183 + mutex_unlock(&d_inode(dir)->i_mutex); 184 184 } 185 185 186 186 /* Caller must hold parent->i_mutex */ ··· 192 192 d_drop(dir); 193 193 res = simple_rmdir(parent, dir); 194 194 /* We have to give up the mm_struct */ 195 - spu_forget(SPUFS_I(dir->d_inode)->i_ctx); 195 + spu_forget(SPUFS_I(d_inode(dir))->i_ctx); 196 196 return res; 197 197 } 198 198 ··· 222 222 int ret; 223 223 224 224 dir = file->f_path.dentry; 225 - parent = dir->d_parent->d_inode; 226 - ctx = SPUFS_I(dir->d_inode)->i_ctx; 225 + parent = d_inode(dir->d_parent); 226 + ctx = SPUFS_I(d_inode(dir))->i_ctx; 227 227 228 228 mutex_lock_nested(&parent->i_mutex, I_MUTEX_PARENT); 229 229 ret = spufs_rmdir(parent, dir); ··· 460 460 goto out_aff_unlock; 461 461 462 462 if (affinity) { 463 - spufs_set_affinity(flags, SPUFS_I(dentry->d_inode)->i_ctx, 463 + spufs_set_affinity(flags, SPUFS_I(d_inode(dentry))->i_ctx, 464 464 neighbor); 465 465 if (neighbor) 466 466 put_spu_context(neighbor); ··· 504 504 505 505 d_instantiate(dentry, inode); 506 506 inc_nlink(dir); 507 - inc_nlink(dentry->d_inode); 507 + inc_nlink(d_inode(dentry)); 508 508 return ret; 509 509 510 510 out_iput: ··· 561 561 long spufs_create(struct path *path, struct dentry *dentry, 562 562 unsigned int flags, umode_t mode, struct file *filp) 563 563 { 564 - struct inode *dir = path->dentry->d_inode; 564 + struct inode *dir = d_inode(path->dentry); 565 565 int ret; 566 566 567 567 /* check if we are on spufs */
+9 -9
arch/s390/hypfs/inode.c
··· 48 48 static void hypfs_update_update(struct super_block *sb) 49 49 { 50 50 struct hypfs_sb_info *sb_info = sb->s_fs_info; 51 - struct inode *inode = sb_info->update_file->d_inode; 51 + struct inode *inode = d_inode(sb_info->update_file); 52 52 53 53 sb_info->last_update = get_seconds(); 54 54 inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; ··· 64 64 65 65 static inline int hypfs_positive(struct dentry *dentry) 66 66 { 67 - return dentry->d_inode && !d_unhashed(dentry); 67 + return d_really_is_positive(dentry) && !d_unhashed(dentry); 68 68 } 69 69 70 70 static void hypfs_remove(struct dentry *dentry) ··· 72 72 struct dentry *parent; 73 73 74 74 parent = dentry->d_parent; 75 - mutex_lock(&parent->d_inode->i_mutex); 75 + mutex_lock(&d_inode(parent)->i_mutex); 76 76 if (hypfs_positive(dentry)) { 77 77 if (d_is_dir(dentry)) 78 - simple_rmdir(parent->d_inode, dentry); 78 + simple_rmdir(d_inode(parent), dentry); 79 79 else 80 - simple_unlink(parent->d_inode, dentry); 80 + simple_unlink(d_inode(parent), dentry); 81 81 } 82 82 d_delete(dentry); 83 83 dput(dentry); 84 - mutex_unlock(&parent->d_inode->i_mutex); 84 + mutex_unlock(&d_inode(parent)->i_mutex); 85 85 } 86 86 87 87 static void hypfs_delete_tree(struct dentry *root) ··· 336 336 struct dentry *dentry; 337 337 struct inode *inode; 338 338 339 - mutex_lock(&parent->d_inode->i_mutex); 339 + mutex_lock(&d_inode(parent)->i_mutex); 340 340 dentry = lookup_one_len(name, parent, strlen(name)); 341 341 if (IS_ERR(dentry)) { 342 342 dentry = ERR_PTR(-ENOMEM); ··· 357 357 } else if (S_ISDIR(mode)) { 358 358 inode->i_op = &simple_dir_inode_operations; 359 359 inode->i_fop = &simple_dir_operations; 360 - inc_nlink(parent->d_inode); 360 + inc_nlink(d_inode(parent)); 361 361 } else 362 362 BUG(); 363 363 inode->i_private = data; 364 364 d_instantiate(dentry, inode); 365 365 dget(dentry); 366 366 fail: 367 - mutex_unlock(&parent->d_inode->i_mutex); 367 + mutex_unlock(&d_inode(parent)->i_mutex); 368 368 return dentry; 369 369 } 370 370
+16 -16
drivers/base/devtmpfs.c
··· 157 157 if (IS_ERR(dentry)) 158 158 return PTR_ERR(dentry); 159 159 160 - err = vfs_mkdir(path.dentry->d_inode, dentry, mode); 160 + err = vfs_mkdir(d_inode(path.dentry), dentry, mode); 161 161 if (!err) 162 162 /* mark as kernel-created inode */ 163 - dentry->d_inode->i_private = &thread; 163 + d_inode(dentry)->i_private = &thread; 164 164 done_path_create(&path, dentry); 165 165 return err; 166 166 } ··· 207 207 if (IS_ERR(dentry)) 208 208 return PTR_ERR(dentry); 209 209 210 - err = vfs_mknod(path.dentry->d_inode, dentry, mode, dev->devt); 210 + err = vfs_mknod(d_inode(path.dentry), dentry, mode, dev->devt); 211 211 if (!err) { 212 212 struct iattr newattrs; 213 213 ··· 215 215 newattrs.ia_uid = uid; 216 216 newattrs.ia_gid = gid; 217 217 newattrs.ia_valid = ATTR_MODE|ATTR_UID|ATTR_GID; 218 - mutex_lock(&dentry->d_inode->i_mutex); 218 + mutex_lock(&d_inode(dentry)->i_mutex); 219 219 notify_change(dentry, &newattrs, NULL); 220 - mutex_unlock(&dentry->d_inode->i_mutex); 220 + mutex_unlock(&d_inode(dentry)->i_mutex); 221 221 222 222 /* mark as kernel-created inode */ 223 - dentry->d_inode->i_private = &thread; 223 + d_inode(dentry)->i_private = &thread; 224 224 } 225 225 done_path_create(&path, dentry); 226 226 return err; ··· 235 235 dentry = kern_path_locked(name, &parent); 236 236 if (IS_ERR(dentry)) 237 237 return PTR_ERR(dentry); 238 - if (dentry->d_inode) { 239 - if (dentry->d_inode->i_private == &thread) 240 - err = vfs_rmdir(parent.dentry->d_inode, dentry); 238 + if (d_really_is_positive(dentry)) { 239 + if (d_inode(dentry)->i_private == &thread) 240 + err = vfs_rmdir(d_inode(parent.dentry), dentry); 241 241 else 242 242 err = -EPERM; 243 243 } else { 244 244 err = -ENOENT; 245 245 } 246 246 dput(dentry); 247 - mutex_unlock(&parent.dentry->d_inode->i_mutex); 247 + mutex_unlock(&d_inode(parent.dentry)->i_mutex); 248 248 path_put(&parent); 249 249 return err; 250 250 } ··· 306 306 if (IS_ERR(dentry)) 307 307 return PTR_ERR(dentry); 308 308 309 - if (dentry->d_inode) { 309 + if (d_really_is_positive(dentry)) { 310 310 struct kstat stat; 311 311 struct path p = {.mnt = parent.mnt, .dentry = dentry}; 312 312 err = vfs_getattr(&p, &stat); 313 - if (!err && dev_mynode(dev, dentry->d_inode, &stat)) { 313 + if (!err && dev_mynode(dev, d_inode(dentry), &stat)) { 314 314 struct iattr newattrs; 315 315 /* 316 316 * before unlinking this node, reset permissions ··· 321 321 newattrs.ia_mode = stat.mode & ~0777; 322 322 newattrs.ia_valid = 323 323 ATTR_UID|ATTR_GID|ATTR_MODE; 324 - mutex_lock(&dentry->d_inode->i_mutex); 324 + mutex_lock(&d_inode(dentry)->i_mutex); 325 325 notify_change(dentry, &newattrs, NULL); 326 - mutex_unlock(&dentry->d_inode->i_mutex); 327 - err = vfs_unlink(parent.dentry->d_inode, dentry, NULL); 326 + mutex_unlock(&d_inode(dentry)->i_mutex); 327 + err = vfs_unlink(d_inode(parent.dentry), dentry, NULL); 328 328 if (!err || err == -ENOENT) 329 329 deleted = 1; 330 330 } ··· 332 332 err = -ENOENT; 333 333 } 334 334 dput(dentry); 335 - mutex_unlock(&parent.dentry->d_inode->i_mutex); 335 + mutex_unlock(&d_inode(parent.dentry)->i_mutex); 336 336 337 337 path_put(&parent); 338 338 if (deleted && strchr(nodename, '/'))
+4 -4
drivers/block/drbd/drbd_debugfs.c
··· 424 424 * So we have our own inline version of it above. :-( */ 425 425 static inline int debugfs_positive(struct dentry *dentry) 426 426 { 427 - return dentry->d_inode && !d_unhashed(dentry); 427 + return d_really_is_positive(dentry) && !d_unhashed(dentry); 428 428 } 429 429 430 430 /* make sure at *open* time that the respective object won't go away. */ ··· 439 439 * or has debugfs_remove() already been called? */ 440 440 parent = file->f_path.dentry->d_parent; 441 441 /* not sure if this can happen: */ 442 - if (!parent || !parent->d_inode) 442 + if (!parent || d_really_is_negative(parent)) 443 443 goto out; 444 444 /* serialize with d_delete() */ 445 - mutex_lock(&parent->d_inode->i_mutex); 445 + mutex_lock(&d_inode(parent)->i_mutex); 446 446 /* Make sure the object is still alive */ 447 447 if (debugfs_positive(file->f_path.dentry) 448 448 && kref_get_unless_zero(kref)) 449 449 ret = 0; 450 - mutex_unlock(&parent->d_inode->i_mutex); 450 + mutex_unlock(&d_inode(parent)->i_mutex); 451 451 if (!ret) { 452 452 ret = single_open(file, show, data); 453 453 if (ret)
+8 -8
drivers/infiniband/hw/ipath/ipath_fs.c
··· 82 82 { 83 83 int error; 84 84 85 - mutex_lock(&parent->d_inode->i_mutex); 85 + mutex_lock(&d_inode(parent)->i_mutex); 86 86 *dentry = lookup_one_len(name, parent, strlen(name)); 87 87 if (!IS_ERR(*dentry)) 88 - error = ipathfs_mknod(parent->d_inode, *dentry, 88 + error = ipathfs_mknod(d_inode(parent), *dentry, 89 89 mode, fops, data); 90 90 else 91 91 error = PTR_ERR(*dentry); 92 - mutex_unlock(&parent->d_inode->i_mutex); 92 + mutex_unlock(&d_inode(parent)->i_mutex); 93 93 94 94 return error; 95 95 } ··· 277 277 } 278 278 279 279 spin_lock(&tmp->d_lock); 280 - if (!d_unhashed(tmp) && tmp->d_inode) { 280 + if (!d_unhashed(tmp) && d_really_is_positive(tmp)) { 281 281 dget_dlock(tmp); 282 282 __d_drop(tmp); 283 283 spin_unlock(&tmp->d_lock); 284 - simple_unlink(parent->d_inode, tmp); 284 + simple_unlink(d_inode(parent), tmp); 285 285 } else 286 286 spin_unlock(&tmp->d_lock); 287 287 ··· 302 302 int ret; 303 303 304 304 root = dget(sb->s_root); 305 - mutex_lock(&root->d_inode->i_mutex); 305 + mutex_lock(&d_inode(root)->i_mutex); 306 306 snprintf(unit, sizeof unit, "%02d", dd->ipath_unit); 307 307 dir = lookup_one_len(unit, root, strlen(unit)); 308 308 ··· 315 315 remove_file(dir, "flash"); 316 316 remove_file(dir, "atomic_counters"); 317 317 d_delete(dir); 318 - ret = simple_rmdir(root->d_inode, dir); 318 + ret = simple_rmdir(d_inode(root), dir); 319 319 320 320 bail: 321 - mutex_unlock(&root->d_inode->i_mutex); 321 + mutex_unlock(&d_inode(root)->i_mutex); 322 322 dput(root); 323 323 return ret; 324 324 }
+10 -10
drivers/infiniband/hw/qib/qib_fs.c
··· 89 89 { 90 90 int error; 91 91 92 - mutex_lock(&parent->d_inode->i_mutex); 92 + mutex_lock(&d_inode(parent)->i_mutex); 93 93 *dentry = lookup_one_len(name, parent, strlen(name)); 94 94 if (!IS_ERR(*dentry)) 95 - error = qibfs_mknod(parent->d_inode, *dentry, 95 + error = qibfs_mknod(d_inode(parent), *dentry, 96 96 mode, fops, data); 97 97 else 98 98 error = PTR_ERR(*dentry); 99 - mutex_unlock(&parent->d_inode->i_mutex); 99 + mutex_unlock(&d_inode(parent)->i_mutex); 100 100 101 101 return error; 102 102 } ··· 455 455 } 456 456 457 457 spin_lock(&tmp->d_lock); 458 - if (!d_unhashed(tmp) && tmp->d_inode) { 458 + if (!d_unhashed(tmp) && d_really_is_positive(tmp)) { 459 459 __d_drop(tmp); 460 460 spin_unlock(&tmp->d_lock); 461 - simple_unlink(parent->d_inode, tmp); 461 + simple_unlink(d_inode(parent), tmp); 462 462 } else { 463 463 spin_unlock(&tmp->d_lock); 464 464 } ··· 481 481 int ret, i; 482 482 483 483 root = dget(sb->s_root); 484 - mutex_lock(&root->d_inode->i_mutex); 484 + mutex_lock(&d_inode(root)->i_mutex); 485 485 snprintf(unit, sizeof(unit), "%u", dd->unit); 486 486 dir = lookup_one_len(unit, root, strlen(unit)); 487 487 ··· 491 491 goto bail; 492 492 } 493 493 494 - mutex_lock(&dir->d_inode->i_mutex); 494 + mutex_lock(&d_inode(dir)->i_mutex); 495 495 remove_file(dir, "counters"); 496 496 remove_file(dir, "counter_names"); 497 497 remove_file(dir, "portcounter_names"); ··· 506 506 } 507 507 } 508 508 remove_file(dir, "flash"); 509 - mutex_unlock(&dir->d_inode->i_mutex); 510 - ret = simple_rmdir(root->d_inode, dir); 509 + mutex_unlock(&d_inode(dir)->i_mutex); 510 + ret = simple_rmdir(d_inode(root), dir); 511 511 d_delete(dir); 512 512 dput(dir); 513 513 514 514 bail: 515 - mutex_unlock(&root->d_inode->i_mutex); 515 + mutex_unlock(&d_inode(root)->i_mutex); 516 516 dput(root); 517 517 return ret; 518 518 }
+8 -8
drivers/oprofile/oprofilefs.c
··· 138 138 struct dentry *dentry; 139 139 struct inode *inode; 140 140 141 - mutex_lock(&root->d_inode->i_mutex); 141 + mutex_lock(&d_inode(root)->i_mutex); 142 142 dentry = d_alloc_name(root, name); 143 143 if (!dentry) { 144 - mutex_unlock(&root->d_inode->i_mutex); 144 + mutex_unlock(&d_inode(root)->i_mutex); 145 145 return -ENOMEM; 146 146 } 147 147 inode = oprofilefs_get_inode(root->d_sb, S_IFREG | perm); 148 148 if (!inode) { 149 149 dput(dentry); 150 - mutex_unlock(&root->d_inode->i_mutex); 150 + mutex_unlock(&d_inode(root)->i_mutex); 151 151 return -ENOMEM; 152 152 } 153 153 inode->i_fop = fops; 154 154 inode->i_private = priv; 155 155 d_add(dentry, inode); 156 - mutex_unlock(&root->d_inode->i_mutex); 156 + mutex_unlock(&d_inode(root)->i_mutex); 157 157 return 0; 158 158 } 159 159 ··· 215 215 struct dentry *dentry; 216 216 struct inode *inode; 217 217 218 - mutex_lock(&parent->d_inode->i_mutex); 218 + mutex_lock(&d_inode(parent)->i_mutex); 219 219 dentry = d_alloc_name(parent, name); 220 220 if (!dentry) { 221 - mutex_unlock(&parent->d_inode->i_mutex); 221 + mutex_unlock(&d_inode(parent)->i_mutex); 222 222 return NULL; 223 223 } 224 224 inode = oprofilefs_get_inode(parent->d_sb, S_IFDIR | 0755); 225 225 if (!inode) { 226 226 dput(dentry); 227 - mutex_unlock(&parent->d_inode->i_mutex); 227 + mutex_unlock(&d_inode(parent)->i_mutex); 228 228 return NULL; 229 229 } 230 230 inode->i_op = &simple_dir_inode_operations; 231 231 inode->i_fop = &simple_dir_operations; 232 232 d_add(dentry, inode); 233 - mutex_unlock(&parent->d_inode->i_mutex); 233 + mutex_unlock(&d_inode(parent)->i_mutex); 234 234 return dentry; 235 235 } 236 236
+1 -1
drivers/usb/gadget/legacy/inode.c
··· 1505 1505 list_del_init (&ep->epfiles); 1506 1506 dentry = ep->dentry; 1507 1507 ep->dentry = NULL; 1508 - parent = dentry->d_parent->d_inode; 1508 + parent = d_inode(dentry->d_parent); 1509 1509 1510 1510 /* break link to controller */ 1511 1511 if (ep->state == STATE_EP_ENABLED)
+8 -8
fs/binfmt_misc.c
··· 603 603 write_unlock(&entries_lock); 604 604 605 605 if (dentry) { 606 - drop_nlink(dentry->d_inode); 606 + drop_nlink(d_inode(dentry)); 607 607 d_drop(dentry); 608 608 dput(dentry); 609 609 simple_release_fs(&bm_mnt, &entry_count); ··· 650 650 case 3: 651 651 /* Delete this handler. */ 652 652 root = dget(file->f_path.dentry->d_sb->s_root); 653 - mutex_lock(&root->d_inode->i_mutex); 653 + mutex_lock(&d_inode(root)->i_mutex); 654 654 655 655 kill_node(e); 656 656 657 - mutex_unlock(&root->d_inode->i_mutex); 657 + mutex_unlock(&d_inode(root)->i_mutex); 658 658 dput(root); 659 659 break; 660 660 default: ··· 687 687 return PTR_ERR(e); 688 688 689 689 root = dget(sb->s_root); 690 - mutex_lock(&root->d_inode->i_mutex); 690 + mutex_lock(&d_inode(root)->i_mutex); 691 691 dentry = lookup_one_len(e->name, root, strlen(e->name)); 692 692 err = PTR_ERR(dentry); 693 693 if (IS_ERR(dentry)) 694 694 goto out; 695 695 696 696 err = -EEXIST; 697 - if (dentry->d_inode) 697 + if (d_really_is_positive(dentry)) 698 698 goto out2; 699 699 700 700 inode = bm_get_inode(sb, S_IFREG | 0644); ··· 723 723 out2: 724 724 dput(dentry); 725 725 out: 726 - mutex_unlock(&root->d_inode->i_mutex); 726 + mutex_unlock(&d_inode(root)->i_mutex); 727 727 dput(root); 728 728 729 729 if (err) { ··· 766 766 case 3: 767 767 /* Delete all handlers. */ 768 768 root = dget(file->f_path.dentry->d_sb->s_root); 769 - mutex_lock(&root->d_inode->i_mutex); 769 + mutex_lock(&d_inode(root)->i_mutex); 770 770 771 771 while (!list_empty(&entries)) 772 772 kill_node(list_entry(entries.next, Node, list)); 773 773 774 - mutex_unlock(&root->d_inode->i_mutex); 774 + mutex_unlock(&d_inode(root)->i_mutex); 775 775 dput(root); 776 776 break; 777 777 default:
+2 -2
fs/nsfs.c
··· 13 13 14 14 static char *ns_dname(struct dentry *dentry, char *buffer, int buflen) 15 15 { 16 - struct inode *inode = dentry->d_inode; 16 + struct inode *inode = d_inode(dentry); 17 17 const struct proc_ns_operations *ns_ops = dentry->d_fsdata; 18 18 19 19 return dynamic_dname(dentry, buffer, buflen, "%s:[%lu]", ··· 22 22 23 23 static void ns_prune_dentry(struct dentry *dentry) 24 24 { 25 - struct inode *inode = dentry->d_inode; 25 + struct inode *inode = d_inode(dentry); 26 26 if (inode) { 27 27 struct ns_common *ns = inode->i_private; 28 28 atomic_long_set(&ns->stashed, 0);
+1 -1
fs/pipe.c
··· 627 627 static char *pipefs_dname(struct dentry *dentry, char *buffer, int buflen) 628 628 { 629 629 return dynamic_dname(dentry, buffer, buflen, "pipe:[%lu]", 630 - dentry->d_inode->i_ino); 630 + d_inode(dentry)->i_ino); 631 631 } 632 632 633 633 static const struct dentry_operations pipefs_dentry_operations = {
+11 -11
ipc/mqueue.c
··· 466 466 467 467 static int mqueue_unlink(struct inode *dir, struct dentry *dentry) 468 468 { 469 - struct inode *inode = dentry->d_inode; 469 + struct inode *inode = d_inode(dentry); 470 470 471 471 dir->i_ctime = dir->i_mtime = dir->i_atime = CURRENT_TIME; 472 472 dir->i_size -= DIRENT_SIZE; ··· 770 770 if ((oflag & O_ACCMODE) == (O_RDWR | O_WRONLY)) 771 771 return ERR_PTR(-EINVAL); 772 772 acc = oflag2acc[oflag & O_ACCMODE]; 773 - if (inode_permission(path->dentry->d_inode, acc)) 773 + if (inode_permission(d_inode(path->dentry), acc)) 774 774 return ERR_PTR(-EACCES); 775 775 return dentry_open(path, oflag, current_cred()); 776 776 } ··· 802 802 803 803 ro = mnt_want_write(mnt); /* we'll drop it in any case */ 804 804 error = 0; 805 - mutex_lock(&root->d_inode->i_mutex); 805 + mutex_lock(&d_inode(root)->i_mutex); 806 806 path.dentry = lookup_one_len(name->name, root, strlen(name->name)); 807 807 if (IS_ERR(path.dentry)) { 808 808 error = PTR_ERR(path.dentry); ··· 811 811 path.mnt = mntget(mnt); 812 812 813 813 if (oflag & O_CREAT) { 814 - if (path.dentry->d_inode) { /* entry already exists */ 814 + if (d_really_is_positive(path.dentry)) { /* entry already exists */ 815 815 audit_inode(name, path.dentry, 0); 816 816 if (oflag & O_EXCL) { 817 817 error = -EEXIST; ··· 824 824 goto out; 825 825 } 826 826 audit_inode_parent_hidden(name, root); 827 - filp = do_create(ipc_ns, root->d_inode, 827 + filp = do_create(ipc_ns, d_inode(root), 828 828 &path, oflag, mode, 829 829 u_attr ? &attr : NULL); 830 830 } 831 831 } else { 832 - if (!path.dentry->d_inode) { 832 + if (d_really_is_negative(path.dentry)) { 833 833 error = -ENOENT; 834 834 goto out; 835 835 } ··· 848 848 put_unused_fd(fd); 849 849 fd = error; 850 850 } 851 - mutex_unlock(&root->d_inode->i_mutex); 851 + mutex_unlock(&d_inode(root)->i_mutex); 852 852 if (!ro) 853 853 mnt_drop_write(mnt); 854 854 out_putname: ··· 873 873 err = mnt_want_write(mnt); 874 874 if (err) 875 875 goto out_name; 876 - mutex_lock_nested(&mnt->mnt_root->d_inode->i_mutex, I_MUTEX_PARENT); 876 + mutex_lock_nested(&d_inode(mnt->mnt_root)->i_mutex, I_MUTEX_PARENT); 877 877 dentry = lookup_one_len(name->name, mnt->mnt_root, 878 878 strlen(name->name)); 879 879 if (IS_ERR(dentry)) { ··· 881 881 goto out_unlock; 882 882 } 883 883 884 - inode = dentry->d_inode; 884 + inode = d_inode(dentry); 885 885 if (!inode) { 886 886 err = -ENOENT; 887 887 } else { 888 888 ihold(inode); 889 - err = vfs_unlink(dentry->d_parent->d_inode, dentry, NULL); 889 + err = vfs_unlink(d_inode(dentry->d_parent), dentry, NULL); 890 890 } 891 891 dput(dentry); 892 892 893 893 out_unlock: 894 - mutex_unlock(&mnt->mnt_root->d_inode->i_mutex); 894 + mutex_unlock(&d_inode(mnt->mnt_root)->i_mutex); 895 895 if (inode) 896 896 iput(inode); 897 897 mnt_drop_write(mnt);
+1 -1
ipc/shm.c
··· 1132 1132 path = shp->shm_file->f_path; 1133 1133 path_get(&path); 1134 1134 shp->shm_nattch++; 1135 - size = i_size_read(path.dentry->d_inode); 1135 + size = i_size_read(d_inode(path.dentry)); 1136 1136 ipc_unlock_object(&shp->shm_perm); 1137 1137 rcu_read_unlock(); 1138 1138
+15 -15
mm/shmem.c
··· 544 544 545 545 static int shmem_setattr(struct dentry *dentry, struct iattr *attr) 546 546 { 547 - struct inode *inode = dentry->d_inode; 547 + struct inode *inode = d_inode(dentry); 548 548 struct shmem_inode_info *info = SHMEM_I(inode); 549 549 int error; 550 550 ··· 2274 2274 */ 2275 2275 static int shmem_link(struct dentry *old_dentry, struct inode *dir, struct dentry *dentry) 2276 2276 { 2277 - struct inode *inode = old_dentry->d_inode; 2277 + struct inode *inode = d_inode(old_dentry); 2278 2278 int ret; 2279 2279 2280 2280 /* ··· 2298 2298 2299 2299 static int shmem_unlink(struct inode *dir, struct dentry *dentry) 2300 2300 { 2301 - struct inode *inode = dentry->d_inode; 2301 + struct inode *inode = d_inode(dentry); 2302 2302 2303 2303 if (inode->i_nlink > 1 && !S_ISDIR(inode->i_mode)) 2304 2304 shmem_free_inode(inode->i_sb); ··· 2315 2315 if (!simple_empty(dentry)) 2316 2316 return -ENOTEMPTY; 2317 2317 2318 - drop_nlink(dentry->d_inode); 2318 + drop_nlink(d_inode(dentry)); 2319 2319 drop_nlink(dir); 2320 2320 return shmem_unlink(dir, dentry); 2321 2321 } ··· 2336 2336 } 2337 2337 old_dir->i_ctime = old_dir->i_mtime = 2338 2338 new_dir->i_ctime = new_dir->i_mtime = 2339 - old_dentry->d_inode->i_ctime = 2340 - new_dentry->d_inode->i_ctime = CURRENT_TIME; 2339 + d_inode(old_dentry)->i_ctime = 2340 + d_inode(new_dentry)->i_ctime = CURRENT_TIME; 2341 2341 2342 2342 return 0; 2343 2343 } ··· 2376 2376 */ 2377 2377 static int shmem_rename2(struct inode *old_dir, struct dentry *old_dentry, struct inode *new_dir, struct dentry *new_dentry, unsigned int flags) 2378 2378 { 2379 - struct inode *inode = old_dentry->d_inode; 2379 + struct inode *inode = d_inode(old_dentry); 2380 2380 int they_are_dirs = S_ISDIR(inode->i_mode); 2381 2381 2382 2382 if (flags & ~(RENAME_NOREPLACE | RENAME_EXCHANGE | RENAME_WHITEOUT)) ··· 2396 2396 return error; 2397 2397 } 2398 2398 2399 - if (new_dentry->d_inode) { 2399 + if (d_really_is_positive(new_dentry)) { 2400 2400 (void) shmem_unlink(new_dir, new_dentry); 2401 2401 if (they_are_dirs) { 2402 - drop_nlink(new_dentry->d_inode); 2402 + drop_nlink(d_inode(new_dentry)); 2403 2403 drop_nlink(old_dir); 2404 2404 } 2405 2405 } else if (they_are_dirs) { ··· 2476 2476 2477 2477 static void *shmem_follow_short_symlink(struct dentry *dentry, struct nameidata *nd) 2478 2478 { 2479 - nd_set_link(nd, SHMEM_I(dentry->d_inode)->symlink); 2479 + nd_set_link(nd, SHMEM_I(d_inode(dentry))->symlink); 2480 2480 return NULL; 2481 2481 } 2482 2482 2483 2483 static void *shmem_follow_link(struct dentry *dentry, struct nameidata *nd) 2484 2484 { 2485 2485 struct page *page = NULL; 2486 - int error = shmem_getpage(dentry->d_inode, 0, &page, SGP_READ, NULL); 2486 + int error = shmem_getpage(d_inode(dentry), 0, &page, SGP_READ, NULL); 2487 2487 nd_set_link(nd, error ? ERR_PTR(error) : kmap(page)); 2488 2488 if (page) 2489 2489 unlock_page(page); ··· 2574 2574 static ssize_t shmem_getxattr(struct dentry *dentry, const char *name, 2575 2575 void *buffer, size_t size) 2576 2576 { 2577 - struct shmem_inode_info *info = SHMEM_I(dentry->d_inode); 2577 + struct shmem_inode_info *info = SHMEM_I(d_inode(dentry)); 2578 2578 int err; 2579 2579 2580 2580 /* ··· 2595 2595 static int shmem_setxattr(struct dentry *dentry, const char *name, 2596 2596 const void *value, size_t size, int flags) 2597 2597 { 2598 - struct shmem_inode_info *info = SHMEM_I(dentry->d_inode); 2598 + struct shmem_inode_info *info = SHMEM_I(d_inode(dentry)); 2599 2599 int err; 2600 2600 2601 2601 /* ··· 2615 2615 2616 2616 static int shmem_removexattr(struct dentry *dentry, const char *name) 2617 2617 { 2618 - struct shmem_inode_info *info = SHMEM_I(dentry->d_inode); 2618 + struct shmem_inode_info *info = SHMEM_I(d_inode(dentry)); 2619 2619 int err; 2620 2620 2621 2621 /* ··· 2635 2635 2636 2636 static ssize_t shmem_listxattr(struct dentry *dentry, char *buffer, size_t size) 2637 2637 { 2638 - struct shmem_inode_info *info = SHMEM_I(dentry->d_inode); 2638 + struct shmem_inode_info *info = SHMEM_I(d_inode(dentry)); 2639 2639 return simple_xattr_list(&info->xattrs, buffer, size); 2640 2640 } 2641 2641 #endif /* CONFIG_TMPFS_XATTR */