mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-02-27 13:57:26 +03:00
allow setting of MODE="0000"
This commit is contained in:
parent
4278ab015d
commit
cf100ca71b
@ -1605,6 +1605,16 @@ EOF
|
|||||||
exp_name => "found-subdir",
|
exp_name => "found-subdir",
|
||||||
rules => <<EOF
|
rules => <<EOF
|
||||||
KERNEL=="sda", TEST=="*/nr_requests", NAME="found-subdir"
|
KERNEL=="sda", TEST=="*/nr_requests", NAME="found-subdir"
|
||||||
|
EOF
|
||||||
|
},
|
||||||
|
{
|
||||||
|
desc => "TEST MODE=0000",
|
||||||
|
subsys => "block",
|
||||||
|
devpath => "/block/sda",
|
||||||
|
exp_name => "sda",
|
||||||
|
exp_perms => "0:0:0000",
|
||||||
|
rules => <<EOF
|
||||||
|
KERNEL=="sda", MODE="0000"
|
||||||
EOF
|
EOF
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
10
udev_rules.c
10
udev_rules.c
@ -1385,11 +1385,11 @@ int udev_rules_get_name(struct udev_rules *rules, struct udevice *udev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* apply permissions */
|
/* apply permissions */
|
||||||
if (!udev->mode_final && rule->mode != 0000) {
|
if (!udev->mode_final && rule->mode.operation != KEY_OP_UNSET) {
|
||||||
if (rule->mode_operation == KEY_OP_ASSIGN_FINAL)
|
if (rule->mode.operation == KEY_OP_ASSIGN_FINAL)
|
||||||
udev->mode_final = 1;
|
udev->mode_final = 1;
|
||||||
udev->mode = rule->mode;
|
udev->mode = strtol(key_val(rule, &rule->mode), NULL, 8);
|
||||||
dbg("applied mode=%#o to '%s'", rule->mode, udev->dev->kernel);
|
dbg("applied mode=%#o to '%s'", udev->mode, udev->dev->kernel);
|
||||||
}
|
}
|
||||||
if (!udev->owner_final && rule->owner.operation != KEY_OP_UNSET) {
|
if (!udev->owner_final && rule->owner.operation != KEY_OP_UNSET) {
|
||||||
if (rule->owner.operation == KEY_OP_ASSIGN_FINAL)
|
if (rule->owner.operation == KEY_OP_ASSIGN_FINAL)
|
||||||
@ -1534,7 +1534,7 @@ int udev_rules_get_run(struct udev_rules *rules, struct udevice *udev)
|
|||||||
rule->symlink.operation == KEY_OP_ASSIGN ||
|
rule->symlink.operation == KEY_OP_ASSIGN ||
|
||||||
rule->symlink.operation == KEY_OP_ASSIGN_FINAL ||
|
rule->symlink.operation == KEY_OP_ASSIGN_FINAL ||
|
||||||
rule->symlink.operation == KEY_OP_ADD ||
|
rule->symlink.operation == KEY_OP_ADD ||
|
||||||
rule->mode_operation != KEY_OP_UNSET ||
|
rule->mode.operation != KEY_OP_UNSET ||
|
||||||
rule->owner.operation != KEY_OP_UNSET || rule->group.operation != KEY_OP_UNSET) {
|
rule->owner.operation != KEY_OP_UNSET || rule->group.operation != KEY_OP_UNSET) {
|
||||||
dbg("skip rule that names a device");
|
dbg("skip rule that names a device");
|
||||||
continue;
|
continue;
|
||||||
|
@ -93,8 +93,7 @@ struct udev_rule {
|
|||||||
struct key symlink_match;
|
struct key symlink_match;
|
||||||
struct key owner;
|
struct key owner;
|
||||||
struct key group;
|
struct key group;
|
||||||
mode_t mode;
|
struct key mode;
|
||||||
enum key_operation mode_operation;
|
|
||||||
enum escape_type string_escape;
|
enum escape_type string_escape;
|
||||||
|
|
||||||
unsigned int link_priority;
|
unsigned int link_priority;
|
||||||
|
@ -579,8 +579,7 @@ static int add_to_rules(struct udev_rules *rules, char *line, const char *filena
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (strcasecmp(key, "MODE") == 0) {
|
if (strcasecmp(key, "MODE") == 0) {
|
||||||
rule->mode = strtol(value, NULL, 8);
|
add_rule_key(rule, &rule->mode, operation, value);
|
||||||
rule->mode_operation = operation;
|
|
||||||
valid = 1;
|
valid = 1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user