mirror of
https://git.yoctoproject.org/poky
synced 2026-05-08 05:09:24 +00:00
makedevs: Create blocks of devices with the correct uid/gid
When creating a block of devices (i.e., when count > 0), the wrong path was used with the call to chown(), effectively trying to change the owner of some (probably) non-existent file. Thus the created device nodes were always owned by root. (From OE-Core rev: e7796880164d6a37c2699a94e1c5391337c5eaa5) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
4128b217c6
commit
6804eec625
@@ -130,7 +130,7 @@ static void add_new_device(char *name, char *path, unsigned long uid,
|
||||
timestamp = sb.st_mtime;
|
||||
}
|
||||
|
||||
mknod(name, mode, rdev);
|
||||
mknod(path, mode, rdev);
|
||||
chown(path, uid, gid);
|
||||
// printf("Device: %s %s UID: %ld GID: %ld MODE: %ld MAJOR: %d MINOR: %d\n",
|
||||
// path, name, uid, gid, mode, (short)(rdev >> 8), (short)(rdev & 0xff));
|
||||
@@ -198,7 +198,7 @@ static int interpret_table_entry(char *line)
|
||||
error_msg_and_die("Device table entries require absolute paths");
|
||||
}
|
||||
name = xstrdup(path + 1);
|
||||
sprintf(path, "%s/%s\0", rootdir, name);
|
||||
sprintf(path, "%s/%s", rootdir, name);
|
||||
|
||||
switch (type) {
|
||||
case 'd':
|
||||
@@ -223,6 +223,7 @@ static int interpret_table_entry(char *line)
|
||||
|
||||
for (i = start; i < count; i++) {
|
||||
sprintf(buf, "%s%d", name, i);
|
||||
sprintf(path, "%s/%s%d", rootdir, name, i);
|
||||
/* FIXME: MKDEV uses illicit insider knowledge of kernel
|
||||
* major/minor representation... */
|
||||
rdev = MKDEV(major, minor + (i * increment - start));
|
||||
|
||||
Reference in New Issue
Block a user