aboutsummaryrefslogtreecommitdiffstats
path: root/meta/recipes-core/udev/udev-115
diff options
context:
space:
mode:
authorRichard Purdie <rpurdie@linux.intel.com>2010-08-27 15:14:24 +0100
committerRichard Purdie <rpurdie@linux.intel.com>2010-08-27 15:29:45 +0100
commit29d6678fd546377459ef75cf54abeef5b969b5cf (patch)
tree8edd65790e37a00d01c3f203f773fe4b5012db18 /meta/recipes-core/udev/udev-115
parentda49de6885ee1bc424e70bc02f21f6ab920efb55 (diff)
downloadopenembedded-core-29d6678fd546377459ef75cf54abeef5b969b5cf.tar.gz
Major layout change to the packages directory
Having one monolithic packages directory makes it hard to find things and is generally overwhelming. This commit splits it into several logical sections roughly based on function, recipes.txt gives more information about the classifications used. The opportunity is also used to switch from "packages" to "recipes" as used in OpenEmbedded as the term "packages" can be confusing to people and has many different meanings. Not all recipes have been classified yet, this is just a first pass at separating things out. Some packages are moved to meta-extras as they're no longer actively used or maintained. Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
Diffstat (limited to 'meta/recipes-core/udev/udev-115')
-rw-r--r--meta/recipes-core/udev/udev-115/flags.patch56
-rw-r--r--meta/recipes-core/udev/udev-115/init48
-rw-r--r--meta/recipes-core/udev/udev-115/local.rules31
-rw-r--r--meta/recipes-core/udev/udev-115/noasmlinkage.patch36
-rw-r--r--meta/recipes-core/udev/udev-115/permissions.rules101
-rw-r--r--meta/recipes-core/udev/udev-115/udev.rules105
-rw-r--r--meta/recipes-core/udev/udev-115/udevtrigger_add_devname_filtering.patch104
-rw-r--r--meta/recipes-core/udev/udev-115/vol_id_ld.patch17
8 files changed, 498 insertions, 0 deletions
diff --git a/meta/recipes-core/udev/udev-115/flags.patch b/meta/recipes-core/udev/udev-115/flags.patch
new file mode 100644
index 0000000000..13f20eb6a8
--- /dev/null
+++ b/meta/recipes-core/udev/udev-115/flags.patch
@@ -0,0 +1,56 @@
+---
+ Makefile | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+Index: udev-115/Makefile
+===================================================================
+--- udev-115.orig/Makefile 2007-08-24 01:29:54.000000000 +0200
++++ udev-115/Makefile 2007-09-20 17:21:45.000000000 +0200
+@@ -112,39 +112,39 @@
+ AR = $(CROSS_COMPILE)ar
+ RANLIB = $(CROSS_COMPILE)ranlib
+
+-CFLAGS += -g -Wall -pipe -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64
++override CFLAGS = -g -Wall -pipe -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64
+ WARNINGS = -Wstrict-prototypes -Wsign-compare -Wshadow \
+ -Wchar-subscripts -Wmissing-declarations -Wnested-externs \
+ -Wpointer-arith -Wcast-align -Wsign-compare -Wmissing-prototypes
+-CFLAGS += $(WARNINGS)
++override CFLAGS += $(WARNINGS)
+
+ LDFLAGS += -Wl,-warn-common,--as-needed
+
+ OPTFLAGS = -Os
+-CFLAGS += $(OPTFLAGS)
++override CFLAGS += $(OPTFLAGS)
+
+ ifeq ($(strip $(USE_LOG)),true)
+- CFLAGS += -DUSE_LOG
++ override CFLAGS += -DUSE_LOG
+ endif
+
+ # if DEBUG is enabled, then we do not strip
+ ifeq ($(strip $(DEBUG)),true)
+- CFLAGS += -DDEBUG
++ override CFLAGS += -DDEBUG
+ endif
+
+ ifeq ($(strip $(USE_GCOV)),true)
+- CFLAGS += -fprofile-arcs -ftest-coverage
++ override CFLAGS += -fprofile-arcs -ftest-coverage
+ LDFLAGS += -fprofile-arcs
+ endif
+
+ ifeq ($(strip $(USE_SELINUX)),true)
+ UDEV_OBJS += udev_selinux.o
+ LIB_OBJS += -lselinux -lsepol
+- CFLAGS += -DUSE_SELINUX
++ override CFLAGS += -DUSE_SELINUX
+ endif
+
+ ifeq ($(strip $(USE_STATIC)),true)
+- CFLAGS += -DUSE_STATIC
++ override CFLAGS += -DUSE_STATIC
+ LDFLAGS += -static
+ endif
+
diff --git a/meta/recipes-core/udev/udev-115/init b/meta/recipes-core/udev/udev-115/init
new file mode 100644
index 0000000000..c882c75607
--- /dev/null
+++ b/meta/recipes-core/udev/udev-115/init
@@ -0,0 +1,48 @@
+export TZ=/etc/localtime
+
+[ -d /sys/class ] || exit 1
+[ -r /proc/mounts ] || exit 1
+[ -x /sbin/udevd ] || exit 1
+[ -f /etc/udev/udev.conf ] && . /etc/udev/udev.conf
+
+kill_udevd() {
+ if [ -x /sbin/pidof ]; then
+ pid=`/sbin/pidof -x udevd`
+ [ -n "$pid" ] && kill $pid
+ fi
+}
+
+export ACTION=add
+# propagate /dev from /sys
+echo -n "Starting udev"
+
+# mount the tmpfs on /dev, if not already done
+LANG=C awk "\$2 == \"/dev\" && \$4 == \"tmpfs\" { exit 1 }" /proc/mounts && {
+ mount -n -o mode=0755 -t tmpfs none "/dev"
+ mkdir -m 0755 /dev/pts
+ mkdir -m 0755 /dev/shm
+}
+
+if [ -e /etc/dev.tar ]; then
+ (cd /; tar xf /etc/dev.tar)
+ not_first_boot=1
+fi
+
+# make_extra_nodes
+kill_udevd > "/dev/null" 2>&1
+
+ # trigger the sorted events
+ echo -e '\000\000\000\000' > /proc/sys/kernel/hotplug
+ /sbin/udevd -d
+
+ /sbin/udevcontrol env STARTUP=1
+ if [ "$not_first_boot" != "" ];then
+ /sbin/udevtrigger --subsystem-nomatch=tty --subsystem-nomatch=mem --subsystem-nomatch=vc --subsystem-nomatch=vtconsole --subsystem-nomatch=misc --subsystem-nomatch=dcon --subsystem-nomatch=pci_bus --subsystem-nomatch=graphics --subsystem-nomatch=backlight --subsystem-nomatch=video4linux --subsystem-nomatch=platform
+ (/sbin/udevsettle --timeout=3; /sbin/udevcontrol env STARTUP=)&
+ else
+ /sbin/udevtrigger
+ /sbin/udevsettle
+ fi
+
+echo
+exit 0
diff --git a/meta/recipes-core/udev/udev-115/local.rules b/meta/recipes-core/udev/udev-115/local.rules
new file mode 100644
index 0000000000..5b926018f5
--- /dev/null
+++ b/meta/recipes-core/udev/udev-115/local.rules
@@ -0,0 +1,31 @@
+# There are a number of modifiers that are allowed to be used in some
+# of the different fields. They provide the following subsitutions:
+#
+# %n the "kernel number" of the device.
+# For example, 'sda3' has a "kernel number" of '3'
+# %e the smallest number for that name which does not matches an existing node
+# %k the kernel name for the device
+# %M the kernel major number for the device
+# %m the kernel minor number for the device
+# %b the bus id for the device
+# %c the string returned by the PROGRAM
+# %s{filename} the content of a sysfs attribute
+# %% the '%' char itself
+#
+
+# Media automounting
+SUBSYSTEM=="block", ACTION=="add" RUN+="/etc/udev/scripts/mount.sh"
+SUBSYSTEM=="block", ACTION=="remove" RUN+="/etc/udev/scripts/mount.sh"
+
+# Handle network interface setup
+SUBSYSTEM=="net", ACTION=="add" RUN+="/etc/udev/scripts/network.sh"
+SUBSYSTEM=="net", ACTION=="remove" RUN+="/etc/udev/scripts/network.sh"
+
+# The first rtc device is symlinked to /dev/rtc
+KERNEL=="rtc0", SYMLINK+="rtc"
+
+# Try and modprobe for drivers for new hardware
+ACTION=="add", DEVPATH=="/devices/*", ENV{MODALIAS}=="?*", RUN+="/sbin/modprobe $env{MODALIAS}"
+
+# Create a symlink to any touchscreen input device
+SUBSYSTEM=="input", KERNEL=="event[0-9]*", SYSFS{modalias}=="input:*-e0*,3,*a0,1,*18,*", SYMLINK+="input/touchscreen0"
diff --git a/meta/recipes-core/udev/udev-115/noasmlinkage.patch b/meta/recipes-core/udev/udev-115/noasmlinkage.patch
new file mode 100644
index 0000000000..5824d29590
--- /dev/null
+++ b/meta/recipes-core/udev/udev-115/noasmlinkage.patch
@@ -0,0 +1,36 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+---
+ udevd.c | 2 +-
+ udevstart.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+Index: udev-115/udevd.c
+===================================================================
+--- udev-115.orig/udevd.c 2007-08-24 01:29:54.000000000 +0200
++++ udev-115/udevd.c 2007-09-20 17:04:51.000000000 +0200
+@@ -767,7 +767,7 @@
+ return msg;
+ }
+
+-static void asmlinkage sig_handler(int signum)
++static void sig_handler(int signum)
+ {
+ switch (signum) {
+ case SIGINT:
+Index: udev-115/udevstart.c
+===================================================================
+--- udev-115.orig/udevstart.c 2007-08-24 01:29:54.000000000 +0200
++++ udev-115/udevstart.c 2007-09-20 17:04:51.000000000 +0200
+@@ -304,7 +304,7 @@
+ }
+ }
+
+-static void asmlinkage sig_handler(int signum)
++static void sig_handler(int signum)
+ {
+ switch (signum) {
+ case SIGALRM:
diff --git a/meta/recipes-core/udev/udev-115/permissions.rules b/meta/recipes-core/udev/udev-115/permissions.rules
new file mode 100644
index 0000000000..99e03b1036
--- /dev/null
+++ b/meta/recipes-core/udev/udev-115/permissions.rules
@@ -0,0 +1,101 @@
+ACTION!="add", GOTO="permissions_end"
+
+# workarounds needed to synchronize with sysfs
+DEVPATH=="/devices/*", ENV{PHYSDEVBUS}=="?*", WAIT_FOR_SYSFS="bus"
+SUBSYSTEM=="scsi", WAIT_FOR_SYSFS="ioerr_cnt"
+# only needed for kernels < 2.6.16
+SUBSYSTEM=="net", WAIT_FOR_SYSFS="address"
+# only needed for kernels < 2.6.17
+SUBSYSTEM=="net", ENV{PHYSDEVDRIVER}=="?*", WAIT_FOR_SYSFS="device/driver"
+
+# default permissions for block devices
+SUBSYSTEM=="block", GROUP="disk"
+SUBSYSTEM=="block", SYSFS{removable}=="1", GROUP="floppy"
+
+# IDE devices
+BUS=="ide", KERNEL=="hd[a-z]|pcd[0-9]*", DRIVER=="ide-cdrom|pcd", \
+ IMPORT{program}="cdrom_id --export $tempnode"
+ENV{ID_CDROM}=="?*", GROUP="cdrom"
+BUS=="ide", KERNEL=="ht[0-9]*", GROUP="tape"
+BUS=="ide", KERNEL=="nht[0-9]*", GROUP="tape"
+
+# SCSI devices
+BUS=="scsi", SYSFS{type}=="1", GROUP="tape"
+BUS=="scsi", SYSFS{type}=="5", GROUP="cdrom"
+
+# USB devices
+BUS=="usb", KERNEL=="legousbtower*", MODE="0666"
+BUS=="usb", KERNEL=="lp[0-9]*", GROUP="lp"
+
+# usbfs-like devices
+SUBSYSTEM=="usb_device", MODE="0664"
+
+# iRiver music players
+SUBSYSTEM=="usb_device", GROUP="plugdev", \
+ SYSFS{idVendor}=="4102", SYSFS{idProduct}=="10[01][135789]"
+
+# serial devices
+SUBSYSTEM=="tty", GROUP="dialout"
+SUBSYSTEM=="capi", GROUP="dialout"
+SUBSYSTEM=="slamr", GROUP="dialout"
+SUBSYSTEM=="zaptel", GROUP="dialout"
+
+# vc devices (all members of the tty subsystem)
+KERNEL=="ptmx", MODE="0666", GROUP="root"
+KERNEL=="console", MODE="0600", GROUP="root"
+KERNEL=="tty", MODE="0666", GROUP="root"
+KERNEL=="tty[0-9]*", GROUP="root"
+KERNEL=="pty*", MODE="0666", GROUP="tty"
+
+# video devices
+SUBSYSTEM=="video4linux", GROUP="video"
+SUBSYSTEM=="drm", GROUP="video"
+SUBSYSTEM=="dvb", GROUP="video"
+SUBSYSTEM=="em8300", GROUP="video"
+SUBSYSTEM=="graphics", GROUP="video"
+SUBSYSTEM=="nvidia", GROUP="video"
+
+# misc devices
+KERNEL=="random", MODE="0666"
+KERNEL=="urandom", MODE="0666"
+KERNEL=="mem", MODE="0640", GROUP="kmem"
+KERNEL=="kmem", MODE="0640", GROUP="kmem"
+KERNEL=="port", MODE="0640", GROUP="kmem"
+KERNEL=="full", MODE="0666"
+KERNEL=="null", MODE="0666"
+KERNEL=="zero", MODE="0666"
+KERNEL=="inotify", MODE="0666"
+KERNEL=="sgi_fetchop", MODE="0666"
+KERNEL=="sonypi", MODE="0666"
+KERNEL=="agpgart", GROUP="video"
+KERNEL=="rtc", GROUP="audio"
+
+KERNEL=="cdemu[0-9]*", GROUP="cdrom"
+KERNEL=="pktcdvd[0-9]*", GROUP="cdrom"
+KERNEL=="pktcdvd", MODE="0644"
+
+# printers and parallel devices
+SUBSYSTEM=="printer", GROUP="lp"
+SUBSYSTEM=="ppdev", GROUP="lp"
+KERNEL=="pt[0-9]*", GROUP="tape"
+KERNEL=="pht[0-9]*", GROUP="tape"
+
+# sound devices
+SUBSYSTEM=="sound", GROUP="audio"
+
+# ieee1394 devices
+KERNEL=="raw1394", GROUP="disk"
+KERNEL=="dv1394*", GROUP="video"
+KERNEL=="video1394*", GROUP="video"
+
+# input devices
+KERNEL=="event[0-9]*", SYSFS{name}=="*dvb*|*DVB*|* IR *" \
+ MODE="0664", GROUP="video"
+KERNEL=="js[0-9]*", MODE="0664"
+
+# AOE character devices
+SUBSYSTEM=="aoe", MODE="0220", GROUP="disk"
+SUBSYSTEM=="aoe", KERNEL=="err", MODE="0440"
+
+LABEL="permissions_end"
+
diff --git a/meta/recipes-core/udev/udev-115/udev.rules b/meta/recipes-core/udev/udev-115/udev.rules
new file mode 100644
index 0000000000..4d29acac0c
--- /dev/null
+++ b/meta/recipes-core/udev/udev-115/udev.rules
@@ -0,0 +1,105 @@
+# There are a number of modifiers that are allowed to be used in some
+# of the different fields. They provide the following subsitutions:
+#
+# %n the "kernel number" of the device.
+# For example, 'sda3' has a "kernel number" of '3'
+# %e the smallest number for that name which does not matches an existing node
+# %k the kernel name for the device
+# %M the kernel major number for the device
+# %m the kernel minor number for the device
+# %b the bus id for the device
+# %c the string returned by the PROGRAM
+# %s{filename} the content of a sysfs attribute
+# %% the '%' char itself
+#
+
+# SCSI devices
+BUS=="scsi", KERNEL=="sr[0-9]*", NAME="scd%n", SYMLINK+="sr%n"
+
+# USB devices
+BUS=="usb", KERNEL=="auer[0-9]*", NAME="usb/%k"
+BUS=="usb", KERNEL=="cpad[0-9]*", NAME="usb/%k"
+BUS=="usb", KERNEL=="dabusb*", NAME="usb/%k"
+BUS=="usb", KERNEL=="hiddev*", NAME="usb/%k"
+BUS=="usb", KERNEL=="legousbtower*", NAME="usb/%k"
+BUS=="usb", KERNEL=="lp[0-9]*", NAME="usb/%k"
+BUS=="usb", KERNEL=="ttyUSB*", SYSFS{product}=="Palm Handheld*", \
+ SYMLINK+="pilot"
+
+# usbfs-like devices
+SUBSYSTEM=="usb_device", \
+ PROGRAM="/bin/sh -c 'export X=%k; export X=$${X#usbdev}; export B=$${X%%%%.*}; export D=$${X#*.}; echo bus/usb/$$B/$$D'", SYMLINK+="%c"
+
+# serial devices
+KERNEL=="capi", NAME="capi20", SYMLINK+="isdn/capi20"
+KERNEL=="capi[0-9]*", NAME="capi/%n"
+
+# video devices
+KERNEL=="card[0-9]*", NAME="dri/%k"
+
+# misc devices
+KERNEL=="hw_random", NAME="hwrng"
+KERNEL=="tun", NAME="net/%k"
+
+KERNEL=="cdemu[0-9]*", NAME="cdemu/%n"
+KERNEL=="pktcdvd[0-9]*", NAME="pktcdvd/%n"
+KERNEL=="pktcdvd", NAME="pktcdvd/control"
+
+KERNEL=="cpu[0-9]*", NAME="cpu/%n/cpuid"
+KERNEL=="msr[0-9]*", NAME="cpu/%n/msr"
+KERNEL=="microcode", NAME="cpu/microcode"
+
+KERNEL=="umad*", NAME="infiniband/%k"
+KERNEL=="issm*", NAME="infiniband/%k"
+KERNEL=="uverbs*", NAME="infiniband/%k"
+KERNEL=="ucm", NAME="infiniband/%k"
+
+KERNEL=="buzzer", NAME="misc/buzzer"
+
+# ALSA devices
+KERNEL=="controlC[0-9]*", NAME="snd/%k"
+KERNEL=="hwC[D0-9]*", NAME="snd/%k"
+KERNEL=="pcmC[D0-9cp]*", NAME="snd/%k"
+KERNEL=="midiC[D0-9]*", NAME="snd/%k"
+KERNEL=="timer", NAME="snd/%k"
+KERNEL=="seq", NAME="snd/%k"
+
+# ieee1394 devices
+KERNEL=="dv1394*", NAME="dv1394/%n"
+KERNEL=="video1394*", NAME="video1394/%n"
+
+# input devices
+KERNEL=="mice", NAME="input/%k"
+KERNEL=="mouse[0-9]*", NAME="input/%k"
+KERNEL=="event[0-9]*", NAME="input/%k"
+KERNEL=="js[0-9]*", NAME="input/%k"
+KERNEL=="ts[0-9]*", NAME="input/%k"
+KERNEL=="uinput", NAME="input/%k"
+
+# Zaptel
+KERNEL=="zapctl", NAME="zap/ctl"
+KERNEL=="zaptimer", NAME="zap/timer"
+KERNEL=="zapchannel", NAME="zap/channel"
+KERNEL=="zappseudo", NAME="zap/pseudo"
+KERNEL=="zap[0-9]*", NAME="zap/%n"
+
+# AOE character devices
+SUBSYSTEM=="aoe", KERNEL=="discover", NAME="etherd/%k"
+SUBSYSTEM=="aoe", KERNEL=="err", NAME="etherd/%k"
+SUBSYSTEM=="aoe", KERNEL=="interfaces", NAME="etherd/%k"
+
+# device mapper creates its own device nodes, so ignore these
+KERNEL=="dm-[0-9]*", OPTIONS+="ignore_device"
+KERNEL=="device-mapper", NAME="mapper/control"
+
+KERNEL=="rfcomm[0-9]*", NAME="%k", GROUP="users", MODE="0660"
+
+# Firmware Helper
+ACTION=="add", SUBSYSTEM=="firmware", RUN+="/lib/udev/firmware_helper"
+
+# Samsung UARTS
+KERNEL=="s3c2410_serial[0-9]", NAME="ttySAC%n"
+
+# MXC UARTs
+KERNEL=="ttymxc[0-4]", NAME="ttymxc%n"
+
diff --git a/meta/recipes-core/udev/udev-115/udevtrigger_add_devname_filtering.patch b/meta/recipes-core/udev/udev-115/udevtrigger_add_devname_filtering.patch
new file mode 100644
index 0000000000..87cafcaa9d
--- /dev/null
+++ b/meta/recipes-core/udev/udev-115/udevtrigger_add_devname_filtering.patch
@@ -0,0 +1,104 @@
+---
+ udevtrigger.c | 40 ++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 40 insertions(+)
+
+Index: udev-115/udevtrigger.c
+===================================================================
+--- udev-115.orig/udevtrigger.c 2007-08-24 01:29:54.000000000 +0200
++++ udev-115/udevtrigger.c 2007-09-21 18:45:28.000000000 +0200
+@@ -39,6 +39,8 @@
+ LIST_HEAD(device_list);
+ LIST_HEAD(filter_subsystem_match_list);
+ LIST_HEAD(filter_subsystem_nomatch_list);
++LIST_HEAD(filter_kernel_match_list);
++LIST_HEAD(filter_kernel_nomatch_list);
+ LIST_HEAD(filter_attr_match_list);
+ LIST_HEAD(filter_attr_nomatch_list);
+
+@@ -218,6 +220,26 @@
+ return 0;
+ }
+
++static int kernel_filtered(const char *kernel)
++{
++ struct name_entry *loop_name;
++
++ /* skip devices matching the prohibited kernel device names */
++ list_for_each_entry(loop_name, &filter_kernel_nomatch_list, node)
++ if (fnmatch(loop_name->name, kernel, 0) == 0)
++ return 1;
++
++ /* skip devices not matching the listed kernel device names */
++ if (!list_empty(&filter_kernel_match_list)) {
++ list_for_each_entry(loop_name, &filter_kernel_match_list, node)
++ if (fnmatch(loop_name->name, kernel, 0) == 0)
++ return 0;
++ return 1;
++ }
++
++ return 0;
++}
++
+ static int attr_filtered(const char *path)
+ {
+ struct name_entry *loop_name;
+@@ -296,6 +318,9 @@
+ if (dent2->d_name[0] == '.')
+ continue;
+
++ if (kernel_filtered(dent2->d_name))
++ continue;
++
+ strlcpy(dirname2, dirname, sizeof(dirname2));
+ strlcat(dirname2, "/", sizeof(dirname2));
+ strlcat(dirname2, dent2->d_name, sizeof(dirname2));
+@@ -402,6 +427,9 @@
+ if (!strcmp(dent2->d_name, "device"))
+ continue;
+
++ if (kernel_filtered(dent2->d_name))
++ continue;
++
+ strlcpy(dirname2, dirname, sizeof(dirname2));
+ strlcat(dirname2, "/", sizeof(dirname2));
+ strlcat(dirname2, dent2->d_name, sizeof(dirname2));
+@@ -458,6 +486,8 @@
+ { "subsystem-nomatch", 1, NULL, 'S' },
+ { "attr-match", 1, NULL, 'a' },
+ { "attr-nomatch", 1, NULL, 'A' },
++ { "kernel-match", 1, NULL, 'k' },
++ { "kernel-nomatch", 1, NULL, 'K' },
+ {}
+ };
+
+@@ -496,6 +526,12 @@
+ case 'A':
+ name_list_add(&filter_attr_nomatch_list, optarg, 0);
+ break;
++ case 'k':
++ name_list_add(&filter_kernel_match_list, optarg, 0);
++ break;
++ case 'K':
++ name_list_add(&filter_kernel_nomatch_list, optarg, 0);
++ break;
+ case 'h':
+ printf("Usage: udevtrigger OPTIONS\n"
+ " --verbose print the list of devices while running\n"
+@@ -504,6 +540,8 @@
+ " marked as failed during a previous run\n"
+ " --subsystem-match=<subsystem> trigger devices from a matching subystem\n"
+ " --subsystem-nomatch=<subsystem> exclude devices from a matching subystem\n"
++ " --kernel-match=<subsystem> trigger devices from a matching kernel device name\n"
++ " --kernel-nomatch=<subsystem> exclude devices from a matching kernel device name\n"
+ " --attr-match=<file[=<value>]> trigger devices with a matching sysfs\n"
+ " attribute\n"
+ " --attr-nomatch=<file[=<value>]> exclude devices with a matching sysfs\n"
+@@ -549,6 +587,8 @@
+ exit:
+ name_list_cleanup(&filter_subsystem_match_list);
+ name_list_cleanup(&filter_subsystem_nomatch_list);
++ name_list_cleanup(&filter_kernel_match_list);
++ name_list_cleanup(&filter_kernel_nomatch_list);
+ name_list_cleanup(&filter_attr_match_list);
+ name_list_cleanup(&filter_attr_nomatch_list);
+
diff --git a/meta/recipes-core/udev/udev-115/vol_id_ld.patch b/meta/recipes-core/udev/udev-115/vol_id_ld.patch
new file mode 100644
index 0000000000..11126eef8d
--- /dev/null
+++ b/meta/recipes-core/udev/udev-115/vol_id_ld.patch
@@ -0,0 +1,17 @@
+---
+ extras/volume_id/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: udev-115/extras/volume_id/Makefile
+===================================================================
+--- udev-115.orig/extras/volume_id/Makefile 2007-09-20 18:17:59.000000000 +0200
++++ udev-115/extras/volume_id/Makefile 2007-09-20 18:18:08.000000000 +0200
+@@ -44,7 +44,7 @@
+ ifeq ($(strip $(VOLUME_ID_STATIC)),true)
+ $(Q) $(LD) $(LDFLAGS) -o $@ $@.o $(LIBUDEV) lib/libvolume_id.a $(LIB_OBJS)
+ else
+- $(Q) $(LD) $(LDFLAGS) -o $@ $@.o $(LIBUDEV) -Llib -lvolume_id $(LIB_OBJS)
++ $(Q) $(LD) -Llib $(LDFLAGS) -o $@ $@.o $(LIBUDEV) -lvolume_id $(LIB_OBJS)
+ endif
+
+ # man pages