1 /* 2 * 3 * Copyright (C) 2011 Novell Inc. 4 * 5 * This program is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 as published by 7 * the Free Software Foundation. 8 */ 9 10 #include <linux/fs.h> 11 #include <linux/slab.h> 12 #include <linux/cred.h> 13 #include <linux/xattr.h> 14 #include <linux/posix_acl.h> 15 #include <linux/ratelimit.h> 16 #include "overlayfs.h" 17 18 19 static dev_t ovl_get_pseudo_dev(struct dentry *dentry) 20 { 21 struct ovl_entry *oe = dentry->d_fsdata; 22 23 return oe->lowerstack[0].layer->pseudo_dev; 24 } 25 26 int ovl_setattr(struct dentry *dentry, struct iattr *attr) 27 { 28 int err; 29 struct dentry *upperdentry; 30 const struct cred *old_cred; 31 32 /* 33 * Check for permissions before trying to copy-up. This is redundant 34 * since it will be rechecked later by ->setattr() on upper dentry. But 35 * without this, copy-up can be triggered by just about anybody. 36 * 37 * We don't initialize inode->size, which just means that 38 * inode_newsize_ok() will always check against MAX_LFS_FILESIZE and not 39 * check for a swapfile (which this won't be anyway). 40 */ 41 err = setattr_prepare(dentry, attr); 42 if (err) 43 return err; 44 45 err = ovl_want_write(dentry); 46 if (err) 47 goto out; 48 49 err = ovl_copy_up(dentry); 50 if (!err) { 51 upperdentry = ovl_dentry_upper(dentry); 52 53 if (attr->ia_valid & (ATTR_KILL_SUID|ATTR_KILL_SGID)) 54 attr->ia_valid &= ~ATTR_MODE; 55 56 inode_lock(upperdentry->d_inode); 57 old_cred = ovl_override_creds(dentry->d_sb); 58 err = notify_change(upperdentry, attr, NULL); 59 revert_creds(old_cred); 60 if (!err) 61 ovl_copyattr(upperdentry->d_inode, dentry->d_inode); 62 inode_unlock(upperdentry->d_inode); 63 } 64 ovl_drop_write(dentry); 65 out: 66 return err; 67 } 68 69 int ovl_getattr(const struct path *path, struct kstat *stat, 70 u32 request_mask, unsigned int flags) 71 { 72 struct dentry *dentry = path->dentry; 73 enum ovl_path_type type; 74 struct path realpath; 75 const struct cred *old_cred; 76 bool is_dir = S_ISDIR(dentry->d_inode->i_mode); 77 bool samefs = ovl_same_sb(dentry->d_sb); 78 int err; 79 80 type = ovl_path_real(dentry, &realpath); 81 old_cred = ovl_override_creds(dentry->d_sb); 82 err = vfs_getattr(&realpath, stat, request_mask, flags); 83 if (err) 84 goto out; 85 86 /* 87 * For non-dir or same fs, we use st_ino of the copy up origin, if we 88 * know it. This guaranties constant st_dev/st_ino across copy up. 89 * 90 * If filesystem supports NFS export ops, this also guaranties 91 * persistent st_ino across mount cycle. 92 */ 93 if (!is_dir || samefs) { 94 if (OVL_TYPE_ORIGIN(type)) { 95 struct kstat lowerstat; 96 u32 lowermask = STATX_INO | (!is_dir ? STATX_NLINK : 0); 97 98 ovl_path_lower(dentry, &realpath); 99 err = vfs_getattr(&realpath, &lowerstat, 100 lowermask, flags); 101 if (err) 102 goto out; 103 104 /* 105 * Lower hardlinks may be broken on copy up to different 106 * upper files, so we cannot use the lower origin st_ino 107 * for those different files, even for the same fs case. 108 * 109 * Similarly, several redirected dirs can point to the 110 * same dir on a lower layer. With the "verify_lower" 111 * feature, we do not use the lower origin st_ino, if 112 * we haven't verified that this redirect is unique. 113 * 114 * With inodes index enabled, it is safe to use st_ino 115 * of an indexed origin. The index validates that the 116 * upper hardlink is not broken and that a redirected 117 * dir is the only redirect to that origin. 118 */ 119 if (ovl_test_flag(OVL_INDEX, d_inode(dentry)) || 120 (!ovl_verify_lower(dentry->d_sb) && 121 (is_dir || lowerstat.nlink == 1))) 122 stat->ino = lowerstat.ino; 123 124 if (samefs) 125 WARN_ON_ONCE(stat->dev != lowerstat.dev); 126 else 127 stat->dev = ovl_get_pseudo_dev(dentry); 128 } 129 if (samefs) { 130 /* 131 * When all layers are on the same fs, all real inode 132 * number are unique, so we use the overlay st_dev, 133 * which is friendly to du -x. 134 */ 135 stat->dev = dentry->d_sb->s_dev; 136 } else if (!OVL_TYPE_UPPER(type)) { 137 /* 138 * For non-samefs setup, to make sure that st_dev/st_ino 139 * pair is unique across the system, we use a unique 140 * anonymous st_dev for lower layer inode. 141 */ 142 stat->dev = ovl_get_pseudo_dev(dentry); 143 } 144 } else { 145 /* 146 * Always use the overlay st_dev for directories, so 'find 147 * -xdev' will scan the entire overlay mount and won't cross the 148 * overlay mount boundaries. 149 * 150 * If not all layers are on the same fs the pair {real st_ino; 151 * overlay st_dev} is not unique, so use the non persistent 152 * overlay st_ino for directories. 153 */ 154 stat->dev = dentry->d_sb->s_dev; 155 stat->ino = dentry->d_inode->i_ino; 156 } 157 158 /* 159 * It's probably not worth it to count subdirs to get the 160 * correct link count. nlink=1 seems to pacify 'find' and 161 * other utilities. 162 */ 163 if (is_dir && OVL_TYPE_MERGE(type)) 164 stat->nlink = 1; 165 166 /* 167 * Return the overlay inode nlinks for indexed upper inodes. 168 * Overlay inode nlink counts the union of the upper hardlinks 169 * and non-covered lower hardlinks. It does not include the upper 170 * index hardlink. 171 */ 172 if (!is_dir && ovl_test_flag(OVL_INDEX, d_inode(dentry))) 173 stat->nlink = dentry->d_inode->i_nlink; 174 175 out: 176 revert_creds(old_cred); 177 178 return err; 179 } 180 181 int ovl_permission(struct inode *inode, int mask) 182 { 183 struct inode *upperinode = ovl_inode_upper(inode); 184 struct inode *realinode = upperinode ?: ovl_inode_lower(inode); 185 const struct cred *old_cred; 186 int err; 187 188 /* Careful in RCU walk mode */ 189 if (!realinode) { 190 WARN_ON(!(mask & MAY_NOT_BLOCK)); 191 return -ECHILD; 192 } 193 194 /* 195 * Check overlay inode with the creds of task and underlying inode 196 * with creds of mounter 197 */ 198 err = generic_permission(inode, mask); 199 if (err) 200 return err; 201 202 old_cred = ovl_override_creds(inode->i_sb); 203 if (!upperinode && 204 !special_file(realinode->i_mode) && mask & MAY_WRITE) { 205 mask &= ~(MAY_WRITE | MAY_APPEND); 206 /* Make sure mounter can read file for copy up later */ 207 mask |= MAY_READ; 208 } 209 err = inode_permission(realinode, mask); 210 revert_creds(old_cred); 211 212 return err; 213 } 214 215 static const char *ovl_get_link(struct dentry *dentry, 216 struct inode *inode, 217 struct delayed_call *done) 218 { 219 const struct cred *old_cred; 220 const char *p; 221 222 if (!dentry) 223 return ERR_PTR(-ECHILD); 224 225 old_cred = ovl_override_creds(dentry->d_sb); 226 p = vfs_get_link(ovl_dentry_real(dentry), done); 227 revert_creds(old_cred); 228 return p; 229 } 230 231 bool ovl_is_private_xattr(const char *name) 232 { 233 return strncmp(name, OVL_XATTR_PREFIX, 234 sizeof(OVL_XATTR_PREFIX) - 1) == 0; 235 } 236 237 int ovl_xattr_set(struct dentry *dentry, struct inode *inode, const char *name, 238 const void *value, size_t size, int flags) 239 { 240 int err; 241 struct dentry *upperdentry = ovl_i_dentry_upper(inode); 242 struct dentry *realdentry = upperdentry ?: ovl_dentry_lower(dentry); 243 const struct cred *old_cred; 244 245 err = ovl_want_write(dentry); 246 if (err) 247 goto out; 248 249 if (!value && !upperdentry) { 250 err = vfs_getxattr(realdentry, name, NULL, 0); 251 if (err < 0) 252 goto out_drop_write; 253 } 254 255 if (!upperdentry) { 256 err = ovl_copy_up(dentry); 257 if (err) 258 goto out_drop_write; 259 260 realdentry = ovl_dentry_upper(dentry); 261 } 262 263 old_cred = ovl_override_creds(dentry->d_sb); 264 if (value) 265 err = vfs_setxattr(realdentry, name, value, size, flags); 266 else { 267 WARN_ON(flags != XATTR_REPLACE); 268 err = vfs_removexattr(realdentry, name); 269 } 270 revert_creds(old_cred); 271 272 out_drop_write: 273 ovl_drop_write(dentry); 274 out: 275 return err; 276 } 277 278 int ovl_xattr_get(struct dentry *dentry, struct inode *inode, const char *name, 279 void *value, size_t size) 280 { 281 ssize_t res; 282 const struct cred *old_cred; 283 struct dentry *realdentry = 284 ovl_i_dentry_upper(inode) ?: ovl_dentry_lower(dentry); 285 286 old_cred = ovl_override_creds(dentry->d_sb); 287 res = vfs_getxattr(realdentry, name, value, size); 288 revert_creds(old_cred); 289 return res; 290 } 291 292 static bool ovl_can_list(const char *s) 293 { 294 /* List all non-trusted xatts */ 295 if (strncmp(s, XATTR_TRUSTED_PREFIX, XATTR_TRUSTED_PREFIX_LEN) != 0) 296 return true; 297 298 /* Never list trusted.overlay, list other trusted for superuser only */ 299 return !ovl_is_private_xattr(s) && capable(CAP_SYS_ADMIN); 300 } 301 302 ssize_t ovl_listxattr(struct dentry *dentry, char *list, size_t size) 303 { 304 struct dentry *realdentry = ovl_dentry_real(dentry); 305 ssize_t res; 306 size_t len; 307 char *s; 308 const struct cred *old_cred; 309 310 old_cred = ovl_override_creds(dentry->d_sb); 311 res = vfs_listxattr(realdentry, list, size); 312 revert_creds(old_cred); 313 if (res <= 0 || size == 0) 314 return res; 315 316 /* filter out private xattrs */ 317 for (s = list, len = res; len;) { 318 size_t slen = strnlen(s, len) + 1; 319 320 /* underlying fs providing us with an broken xattr list? */ 321 if (WARN_ON(slen > len)) 322 return -EIO; 323 324 len -= slen; 325 if (!ovl_can_list(s)) { 326 res -= slen; 327 memmove(s, s + slen, len); 328 } else { 329 s += slen; 330 } 331 } 332 333 return res; 334 } 335 336 struct posix_acl *ovl_get_acl(struct inode *inode, int type) 337 { 338 struct inode *realinode = ovl_inode_real(inode); 339 const struct cred *old_cred; 340 struct posix_acl *acl; 341 342 if (!IS_ENABLED(CONFIG_FS_POSIX_ACL) || !IS_POSIXACL(realinode)) 343 return NULL; 344 345 old_cred = ovl_override_creds(inode->i_sb); 346 acl = get_acl(realinode, type); 347 revert_creds(old_cred); 348 349 return acl; 350 } 351 352 static bool ovl_open_need_copy_up(struct dentry *dentry, int flags) 353 { 354 /* Copy up of disconnected dentry does not set upper alias */ 355 if (ovl_dentry_upper(dentry) && 356 (ovl_dentry_has_upper_alias(dentry) || 357 (dentry->d_flags & DCACHE_DISCONNECTED))) 358 return false; 359 360 if (special_file(d_inode(dentry)->i_mode)) 361 return false; 362 363 if (!(OPEN_FMODE(flags) & FMODE_WRITE) && !(flags & O_TRUNC)) 364 return false; 365 366 return true; 367 } 368 369 int ovl_open_maybe_copy_up(struct dentry *dentry, unsigned int file_flags) 370 { 371 int err = 0; 372 373 if (ovl_open_need_copy_up(dentry, file_flags)) { 374 err = ovl_want_write(dentry); 375 if (!err) { 376 err = ovl_copy_up_flags(dentry, file_flags); 377 ovl_drop_write(dentry); 378 } 379 } 380 381 return err; 382 } 383 384 int ovl_update_time(struct inode *inode, struct timespec *ts, int flags) 385 { 386 struct dentry *alias; 387 struct path upperpath; 388 389 if (!(flags & S_ATIME)) 390 return 0; 391 392 alias = d_find_any_alias(inode); 393 if (!alias) 394 return 0; 395 396 ovl_path_upper(alias, &upperpath); 397 if (upperpath.dentry) { 398 touch_atime(&upperpath); 399 inode->i_atime = d_inode(upperpath.dentry)->i_atime; 400 } 401 402 dput(alias); 403 404 return 0; 405 } 406 407 static const struct inode_operations ovl_file_inode_operations = { 408 .setattr = ovl_setattr, 409 .permission = ovl_permission, 410 .getattr = ovl_getattr, 411 .listxattr = ovl_listxattr, 412 .get_acl = ovl_get_acl, 413 .update_time = ovl_update_time, 414 }; 415 416 static const struct inode_operations ovl_symlink_inode_operations = { 417 .setattr = ovl_setattr, 418 .get_link = ovl_get_link, 419 .getattr = ovl_getattr, 420 .listxattr = ovl_listxattr, 421 .update_time = ovl_update_time, 422 }; 423 424 /* 425 * It is possible to stack overlayfs instance on top of another 426 * overlayfs instance as lower layer. We need to annonate the 427 * stackable i_mutex locks according to stack level of the super 428 * block instance. An overlayfs instance can never be in stack 429 * depth 0 (there is always a real fs below it). An overlayfs 430 * inode lock will use the lockdep annotaion ovl_i_mutex_key[depth]. 431 * 432 * For example, here is a snip from /proc/lockdep_chains after 433 * dir_iterate of nested overlayfs: 434 * 435 * [...] &ovl_i_mutex_dir_key[depth] (stack_depth=2) 436 * [...] &ovl_i_mutex_dir_key[depth]#2 (stack_depth=1) 437 * [...] &type->i_mutex_dir_key (stack_depth=0) 438 */ 439 #define OVL_MAX_NESTING FILESYSTEM_MAX_STACK_DEPTH 440 441 static inline void ovl_lockdep_annotate_inode_mutex_key(struct inode *inode) 442 { 443 #ifdef CONFIG_LOCKDEP 444 static struct lock_class_key ovl_i_mutex_key[OVL_MAX_NESTING]; 445 static struct lock_class_key ovl_i_mutex_dir_key[OVL_MAX_NESTING]; 446 static struct lock_class_key ovl_i_lock_key[OVL_MAX_NESTING]; 447 448 int depth = inode->i_sb->s_stack_depth - 1; 449 450 if (WARN_ON_ONCE(depth < 0 || depth >= OVL_MAX_NESTING)) 451 depth = 0; 452 453 if (S_ISDIR(inode->i_mode)) 454 lockdep_set_class(&inode->i_rwsem, &ovl_i_mutex_dir_key[depth]); 455 else 456 lockdep_set_class(&inode->i_rwsem, &ovl_i_mutex_key[depth]); 457 458 lockdep_set_class(&OVL_I(inode)->lock, &ovl_i_lock_key[depth]); 459 #endif 460 } 461 462 static void ovl_fill_inode(struct inode *inode, umode_t mode, dev_t rdev) 463 { 464 inode->i_ino = get_next_ino(); 465 inode->i_mode = mode; 466 inode->i_flags |= S_NOCMTIME; 467 #ifdef CONFIG_FS_POSIX_ACL 468 inode->i_acl = inode->i_default_acl = ACL_DONT_CACHE; 469 #endif 470 471 ovl_lockdep_annotate_inode_mutex_key(inode); 472 473 switch (mode & S_IFMT) { 474 case S_IFREG: 475 inode->i_op = &ovl_file_inode_operations; 476 break; 477 478 case S_IFDIR: 479 inode->i_op = &ovl_dir_inode_operations; 480 inode->i_fop = &ovl_dir_operations; 481 break; 482 483 case S_IFLNK: 484 inode->i_op = &ovl_symlink_inode_operations; 485 break; 486 487 default: 488 inode->i_op = &ovl_file_inode_operations; 489 init_special_inode(inode, mode, rdev); 490 break; 491 } 492 } 493 494 /* 495 * With inodes index enabled, an overlay inode nlink counts the union of upper 496 * hardlinks and non-covered lower hardlinks. During the lifetime of a non-pure 497 * upper inode, the following nlink modifying operations can happen: 498 * 499 * 1. Lower hardlink copy up 500 * 2. Upper hardlink created, unlinked or renamed over 501 * 3. Lower hardlink whiteout or renamed over 502 * 503 * For the first, copy up case, the union nlink does not change, whether the 504 * operation succeeds or fails, but the upper inode nlink may change. 505 * Therefore, before copy up, we store the union nlink value relative to the 506 * lower inode nlink in the index inode xattr trusted.overlay.nlink. 507 * 508 * For the second, upper hardlink case, the union nlink should be incremented 509 * or decremented IFF the operation succeeds, aligned with nlink change of the 510 * upper inode. Therefore, before link/unlink/rename, we store the union nlink 511 * value relative to the upper inode nlink in the index inode. 512 * 513 * For the last, lower cover up case, we simplify things by preceding the 514 * whiteout or cover up with copy up. This makes sure that there is an index 515 * upper inode where the nlink xattr can be stored before the copied up upper 516 * entry is unlink. 517 */ 518 #define OVL_NLINK_ADD_UPPER (1 << 0) 519 520 /* 521 * On-disk format for indexed nlink: 522 * 523 * nlink relative to the upper inode - "U[+-]NUM" 524 * nlink relative to the lower inode - "L[+-]NUM" 525 */ 526 527 static int ovl_set_nlink_common(struct dentry *dentry, 528 struct dentry *realdentry, const char *format) 529 { 530 struct inode *inode = d_inode(dentry); 531 struct inode *realinode = d_inode(realdentry); 532 char buf[13]; 533 int len; 534 535 len = snprintf(buf, sizeof(buf), format, 536 (int) (inode->i_nlink - realinode->i_nlink)); 537 538 if (WARN_ON(len >= sizeof(buf))) 539 return -EIO; 540 541 return ovl_do_setxattr(ovl_dentry_upper(dentry), 542 OVL_XATTR_NLINK, buf, len, 0); 543 } 544 545 int ovl_set_nlink_upper(struct dentry *dentry) 546 { 547 return ovl_set_nlink_common(dentry, ovl_dentry_upper(dentry), "U%+i"); 548 } 549 550 int ovl_set_nlink_lower(struct dentry *dentry) 551 { 552 return ovl_set_nlink_common(dentry, ovl_dentry_lower(dentry), "L%+i"); 553 } 554 555 unsigned int ovl_get_nlink(struct dentry *lowerdentry, 556 struct dentry *upperdentry, 557 unsigned int fallback) 558 { 559 int nlink_diff; 560 int nlink; 561 char buf[13]; 562 int err; 563 564 if (!lowerdentry || !upperdentry || d_inode(lowerdentry)->i_nlink == 1) 565 return fallback; 566 567 err = vfs_getxattr(upperdentry, OVL_XATTR_NLINK, &buf, sizeof(buf) - 1); 568 if (err < 0) 569 goto fail; 570 571 buf[err] = '\0'; 572 if ((buf[0] != 'L' && buf[0] != 'U') || 573 (buf[1] != '+' && buf[1] != '-')) 574 goto fail; 575 576 err = kstrtoint(buf + 1, 10, &nlink_diff); 577 if (err < 0) 578 goto fail; 579 580 nlink = d_inode(buf[0] == 'L' ? lowerdentry : upperdentry)->i_nlink; 581 nlink += nlink_diff; 582 583 if (nlink <= 0) 584 goto fail; 585 586 return nlink; 587 588 fail: 589 pr_warn_ratelimited("overlayfs: failed to get index nlink (%pd2, err=%i)\n", 590 upperdentry, err); 591 return fallback; 592 } 593 594 struct inode *ovl_new_inode(struct super_block *sb, umode_t mode, dev_t rdev) 595 { 596 struct inode *inode; 597 598 inode = new_inode(sb); 599 if (inode) 600 ovl_fill_inode(inode, mode, rdev); 601 602 return inode; 603 } 604 605 static int ovl_inode_test(struct inode *inode, void *data) 606 { 607 return inode->i_private == data; 608 } 609 610 static int ovl_inode_set(struct inode *inode, void *data) 611 { 612 inode->i_private = data; 613 return 0; 614 } 615 616 static bool ovl_verify_inode(struct inode *inode, struct dentry *lowerdentry, 617 struct dentry *upperdentry, bool strict) 618 { 619 /* 620 * For directories, @strict verify from lookup path performs consistency 621 * checks, so NULL lower/upper in dentry must match NULL lower/upper in 622 * inode. Non @strict verify from NFS handle decode path passes NULL for 623 * 'unknown' lower/upper. 624 */ 625 if (S_ISDIR(inode->i_mode) && strict) { 626 /* Real lower dir moved to upper layer under us? */ 627 if (!lowerdentry && ovl_inode_lower(inode)) 628 return false; 629 630 /* Lookup of an uncovered redirect origin? */ 631 if (!upperdentry && ovl_inode_upper(inode)) 632 return false; 633 } 634 635 /* 636 * Allow non-NULL lower inode in ovl_inode even if lowerdentry is NULL. 637 * This happens when finding a copied up overlay inode for a renamed 638 * or hardlinked overlay dentry and lower dentry cannot be followed 639 * by origin because lower fs does not support file handles. 640 */ 641 if (lowerdentry && ovl_inode_lower(inode) != d_inode(lowerdentry)) 642 return false; 643 644 /* 645 * Allow non-NULL __upperdentry in inode even if upperdentry is NULL. 646 * This happens when finding a lower alias for a copied up hard link. 647 */ 648 if (upperdentry && ovl_inode_upper(inode) != d_inode(upperdentry)) 649 return false; 650 651 return true; 652 } 653 654 struct inode *ovl_lookup_inode(struct super_block *sb, struct dentry *real, 655 bool is_upper) 656 { 657 struct inode *inode, *key = d_inode(real); 658 659 inode = ilookup5(sb, (unsigned long) key, ovl_inode_test, key); 660 if (!inode) 661 return NULL; 662 663 if (!ovl_verify_inode(inode, is_upper ? NULL : real, 664 is_upper ? real : NULL, false)) { 665 iput(inode); 666 return ERR_PTR(-ESTALE); 667 } 668 669 return inode; 670 } 671 672 struct inode *ovl_get_inode(struct super_block *sb, struct dentry *upperdentry, 673 struct dentry *lowerdentry, struct dentry *index, 674 unsigned int numlower) 675 { 676 struct ovl_fs *ofs = sb->s_fs_info; 677 struct inode *realinode = upperdentry ? d_inode(upperdentry) : NULL; 678 struct inode *inode; 679 /* Already indexed or could be indexed on copy up? */ 680 bool indexed = (index || (ovl_indexdir(sb) && !upperdentry)); 681 struct dentry *origin = indexed ? lowerdentry : NULL; 682 bool is_dir; 683 684 if (WARN_ON(upperdentry && indexed && !lowerdentry)) 685 return ERR_PTR(-EIO); 686 687 if (!realinode) 688 realinode = d_inode(lowerdentry); 689 690 /* 691 * Copy up origin (lower) may exist for non-indexed non-dir upper, but 692 * we must not use lower as hash key in that case. 693 * Hash non-dir that is or could be indexed by origin inode. 694 * Hash dir that is or could be merged by origin inode. 695 * Hash pure upper and non-indexed non-dir by upper inode. 696 * Hash non-indexed dir by upper inode for NFS export. 697 */ 698 is_dir = S_ISDIR(realinode->i_mode); 699 if (is_dir && (indexed || !sb->s_export_op || !ofs->upper_mnt)) 700 origin = lowerdentry; 701 702 if (upperdentry || origin) { 703 struct inode *key = d_inode(origin ?: upperdentry); 704 unsigned int nlink = is_dir ? 1 : realinode->i_nlink; 705 706 inode = iget5_locked(sb, (unsigned long) key, 707 ovl_inode_test, ovl_inode_set, key); 708 if (!inode) 709 goto out_nomem; 710 if (!(inode->i_state & I_NEW)) { 711 /* 712 * Verify that the underlying files stored in the inode 713 * match those in the dentry. 714 */ 715 if (!ovl_verify_inode(inode, lowerdentry, upperdentry, 716 true)) { 717 iput(inode); 718 inode = ERR_PTR(-ESTALE); 719 goto out; 720 } 721 722 dput(upperdentry); 723 goto out; 724 } 725 726 /* Recalculate nlink for non-dir due to indexing */ 727 if (!is_dir) 728 nlink = ovl_get_nlink(lowerdentry, upperdentry, nlink); 729 set_nlink(inode, nlink); 730 } else { 731 inode = new_inode(sb); 732 if (!inode) 733 goto out_nomem; 734 } 735 ovl_fill_inode(inode, realinode->i_mode, realinode->i_rdev); 736 ovl_inode_init(inode, upperdentry, lowerdentry); 737 738 if (upperdentry && ovl_is_impuredir(upperdentry)) 739 ovl_set_flag(OVL_IMPURE, inode); 740 741 /* Check for non-merge dir that may have whiteouts */ 742 if (is_dir) { 743 if (((upperdentry && lowerdentry) || numlower > 1) || 744 ovl_check_origin_xattr(upperdentry ?: lowerdentry)) { 745 ovl_set_flag(OVL_WHITEOUTS, inode); 746 } 747 } 748 749 if (inode->i_state & I_NEW) 750 unlock_new_inode(inode); 751 out: 752 return inode; 753 754 out_nomem: 755 inode = ERR_PTR(-ENOMEM); 756 goto out; 757 } 758