aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorKay Sievers <kay@vrfy.org>2013-04-06 12:56:00 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-04-08 11:21:48 -0400
commit3c2670e6515cf584810f417db9b00992c8b2d75a (patch)
treebc13c7babc6c8f08b6a82d0b3848778b264d9651 /include/linux
parentbb2b0051d7b0772ea9d0b4be900c2d965093f5d7 (diff)
driver core: add uid and gid to devtmpfs
Some drivers want to tell userspace what uid and gid should be used for their device nodes, so allow that information to percolate through the driver core to userspace in order to make this happen. This means that some systems (i.e. Android and friends) will not need to even run a udev-like daemon for their device node manager and can just rely in devtmpfs fully, reducing their footprint even more. Signed-off-by: Kay Sievers <kay@vrfy.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/device.h7
1 files changed, 5 insertions, 2 deletions
diff --git a/include/linux/device.h b/include/linux/device.h
index 4a7c4a84afee..851b85c7101e 100644
--- a/include/linux/device.h
+++ b/include/linux/device.h
@@ -25,6 +25,7 @@
25#include <linux/pm.h> 25#include <linux/pm.h>
26#include <linux/atomic.h> 26#include <linux/atomic.h>
27#include <linux/ratelimit.h> 27#include <linux/ratelimit.h>
28#include <linux/uidgid.h>
28#include <asm/device.h> 29#include <asm/device.h>
29 30
30struct device; 31struct device;
@@ -465,7 +466,8 @@ struct device_type {
465 const char *name; 466 const char *name;
466 const struct attribute_group **groups; 467 const struct attribute_group **groups;
467 int (*uevent)(struct device *dev, struct kobj_uevent_env *env); 468 int (*uevent)(struct device *dev, struct kobj_uevent_env *env);
468 char *(*devnode)(struct device *dev, umode_t *mode); 469 char *(*devnode)(struct device *dev, umode_t *mode,
470 uid_t *uid, gid_t *gid);
469 void (*release)(struct device *dev); 471 void (*release)(struct device *dev);
470 472
471 const struct dev_pm_ops *pm; 473 const struct dev_pm_ops *pm;
@@ -843,7 +845,8 @@ extern int device_rename(struct device *dev, const char *new_name);
843extern int device_move(struct device *dev, struct device *new_parent, 845extern int device_move(struct device *dev, struct device *new_parent,
844 enum dpm_order dpm_order); 846 enum dpm_order dpm_order);
845extern const char *device_get_devnode(struct device *dev, 847extern const char *device_get_devnode(struct device *dev,
846 umode_t *mode, const char **tmp); 848 umode_t *mode, uid_t *uid, gid_t *gid,
849 const char **tmp);
847extern void *dev_get_drvdata(const struct device *dev); 850extern void *dev_get_drvdata(const struct device *dev);
848extern int dev_set_drvdata(struct device *dev, void *data); 851extern int dev_set_drvdata(struct device *dev, void *data);
849 852