devtmpfs.c (9938b04472d5c59f8bd8152a548533a8599596a2) devtmpfs.c (a528d35e8bfcc521d7cb70aaf03e1bd296c8493f)
1/*
2 * devtmpfs - kernel-maintained tmpfs-based /dev
3 *
4 * Copyright (C) 2009, Kay Sievers <kay.sievers@vrfy.org>
5 *
6 * During bootup, before any driver core device is registered,
7 * devtmpfs, a tmpfs-based filesystem is created. Every driver-core
8 * device which requests a device node, will add a node in this

--- 295 unchanged lines hidden (view full) ---

304
305 dentry = kern_path_locked(nodename, &parent);
306 if (IS_ERR(dentry))
307 return PTR_ERR(dentry);
308
309 if (d_really_is_positive(dentry)) {
310 struct kstat stat;
311 struct path p = {.mnt = parent.mnt, .dentry = dentry};
1/*
2 * devtmpfs - kernel-maintained tmpfs-based /dev
3 *
4 * Copyright (C) 2009, Kay Sievers <kay.sievers@vrfy.org>
5 *
6 * During bootup, before any driver core device is registered,
7 * devtmpfs, a tmpfs-based filesystem is created. Every driver-core
8 * device which requests a device node, will add a node in this

--- 295 unchanged lines hidden (view full) ---

304
305 dentry = kern_path_locked(nodename, &parent);
306 if (IS_ERR(dentry))
307 return PTR_ERR(dentry);
308
309 if (d_really_is_positive(dentry)) {
310 struct kstat stat;
311 struct path p = {.mnt = parent.mnt, .dentry = dentry};
312 err = vfs_getattr(&p, &stat);
312 err = vfs_getattr(&p, &stat, STATX_TYPE | STATX_MODE,
313 AT_STATX_SYNC_AS_STAT);
313 if (!err && dev_mynode(dev, d_inode(dentry), &stat)) {
314 struct iattr newattrs;
315 /*
316 * before unlinking this node, reset permissions
317 * of possible references like hardlinks
318 */
319 newattrs.ia_uid = GLOBAL_ROOT_UID;
320 newattrs.ia_gid = GLOBAL_ROOT_GID;

--- 123 unchanged lines hidden ---
314 if (!err && dev_mynode(dev, d_inode(dentry), &stat)) {
315 struct iattr newattrs;
316 /*
317 * before unlinking this node, reset permissions
318 * of possible references like hardlinks
319 */
320 newattrs.ia_uid = GLOBAL_ROOT_UID;
321 newattrs.ia_gid = GLOBAL_ROOT_GID;

--- 123 unchanged lines hidden ---