[systemd-devel] [RFC][PATCH] Escape unit name from udev

Lennart Poettering lennart at poettering.net
Mon May 6 14:12:03 PDT 2013


On Tue, 23.04.13 13:34, MUNEDA Takahiro (muneda.takahiro at jp.fujitsu.com) wrote:

> This patch escapes a unit name which was derived from udev.
> 
> Please imagine following udev rule.
> 
>   ACTION=="online|offline", TAG+="systemd", ENV{SYSTEMD_WANTS}="muneda@%p.service"
>   ACTION=="online|offline", TAG+="systemd", ENV{SYSTEMD_WANTS}="muneda@%r.service"
>   ACTION=="online|offline", TAG+="systemd", ENV{SYSTEMD_WANTS}="muneda@%S.service"
> 
> When unit name is derived from udev via
> udev_device_get_property_value(), the name may contains '/' if
> ENV{SYSTEMD_WANTS} has the udev options $devpath(%p), $root(%r), or
> $sys(%S).  However, '/' is a invalid char for unit name so processing
> of this rule fails as Invalid argument with following message.
> 
> Apr 22 13:21:37 localhost systemd[1]: Failed to load device unit: Invalid argument
> Apr 22 13:21:37 localhost systemd[1]: Failed to process udev device event: Invalid argument
> 
> This patch escapes those invalid chars in a unit name.
> Tested with 202, and confirmed to apply cleanly on top of commit 195f8e36.

The patch looks OK I guess. I merged it now. I am not entirely sure
though that using the devpath as instance name is actually the best
choice... Kay?

Lennart

-- 
Lennart Poettering - Red Hat, Inc.


More information about the systemd-devel mailing list