Compare commits
6 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6ff6618fa8 | ||
|
|
9dc3a4b857 | ||
|
|
95a4f66901 | ||
|
|
8bbeb28211 | ||
|
|
36eba4b06e | ||
|
|
a540bc715b |
18 changed files with 2530 additions and 1 deletions
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
udev-160.tar.bz2
|
||||
/udev-164.tar.bz2
|
||||
/udev-164.tar.bz2.sign
|
||||
/udev-166.tar.bz2
|
||||
/udev-166.tar.bz2.sign
|
||||
/udev-167.tar.bz2
|
||||
56
0002-Run-ata_id-on-non-removable-USB-devices.patch
Normal file
56
0002-Run-ata_id-on-non-removable-USB-devices.patch
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
From 42b9482ab2da64b4c2f254c227c0efaf83988a84 Mon Sep 17 00:00:00 2001
|
||||
From: David Zeuthen <davidz@redhat.com>
|
||||
Date: Wed, 30 Mar 2011 08:11:03 -0400
|
||||
Subject: [PATCH] Run ata_id on non-removable USB devices
|
||||
|
||||
If a USB device is marked as removable, it is often a SATA/PATA disk
|
||||
in an enclosure (note that flash card readers and usb storage sticks
|
||||
are always marked as removable). In this case, try running ata_id
|
||||
(which sends ATA commands wrapped in SCSI ATA PASS THROUGH commands)
|
||||
to get information about the disk. If this fails, just fall back to
|
||||
running usb_id since it could be the device isn't an ATA device at
|
||||
all or the device doesn't have a SAT layer.
|
||||
|
||||
This extra information is nice to have as it indicates if it is
|
||||
suitable to send e.g. SMART commands to the disk, whether the disk
|
||||
supports power management and so on. Additionally, the VPD and serial
|
||||
number returned by ata_id is usually more accurate as it stems from
|
||||
the disk itself instead of the enclosure.
|
||||
|
||||
Note that udisks has been doing this for a while
|
||||
|
||||
KERNEL=="sd*[!0-9]", ATTR{removable}=="0", ENV{ID_BUS}=="usb", ENV{DEVTYPE}=="disk", IMPORT{program}="udisks-probe-ata-smart $tempnode"
|
||||
|
||||
so this change shouldn't be too disruptive (udisks-probe-ata-smart
|
||||
also sends ATA commands via the ATA PASS THROUGH command).
|
||||
|
||||
Signed-off-by: David Zeuthen <davidz@redhat.com>
|
||||
---
|
||||
rules/rules.d/60-persistent-storage.rules | 8 ++++++--
|
||||
1 files changed, 6 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/rules/rules.d/60-persistent-storage.rules b/rules/rules.d/60-persistent-storage.rules
|
||||
index 6a9abdd..12fabef 100644
|
||||
--- a/rules/rules.d/60-persistent-storage.rules
|
||||
+++ b/rules/rules.d/60-persistent-storage.rules
|
||||
@@ -22,14 +22,18 @@ ENV{DEVTYPE}=="partition", IMPORT{parent}="ID_*"
|
||||
KERNEL=="vd*[!0-9]", ATTRS{serial}=="?*", ENV{ID_SERIAL}="$attr{serial}", SYMLINK+="disk/by-id/virtio-$env{ID_SERIAL}"
|
||||
KERNEL=="vd*[0-9]", ATTRS{serial}=="?*", ENV{ID_SERIAL}="$attr{serial}", SYMLINK+="disk/by-id/virtio-$env{ID_SERIAL}-part%n"
|
||||
|
||||
-# USB devices use their own serial number
|
||||
-KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="usb", IMPORT{program}="usb_id --export %p"
|
||||
# ATA devices with their own "ata" kernel subsystem
|
||||
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="ata", IMPORT{program}="ata_id --export $tempnode"
|
||||
# ATA devices using the "scsi" subsystem
|
||||
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="scsi", ATTRS{vendor}=="ATA", IMPORT{program}="ata_id --export $tempnode"
|
||||
# ATA/ATAPI devices (SPC-3 or later) using the "scsi" subsystem
|
||||
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="scsi", ATTRS{type}=="5", ATTRS{scsi_level}=="[6-9]*", IMPORT{program}="ata_id --export $tempnode"
|
||||
+
|
||||
+# Run ata_id on non-removable USB Mass Storage (SATA/PATA disks in enclosures)
|
||||
+KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", ATTR{removable}=="0", SUBSYSTEMS=="usb", IMPORT{program}="ata_id --export $tempnode"
|
||||
+# Otherwise fall back to using usb_id for USB devices
|
||||
+KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="usb", IMPORT{program}="usb_id --export %p"
|
||||
+
|
||||
# scsi devices
|
||||
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", IMPORT{program}="scsi_id --export --whitelisted -d $tempnode", ENV{ID_BUS}="scsi"
|
||||
KERNEL=="cciss*", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}!="?*", IMPORT{program}="scsi_id --export --whitelisted -d $tempnode", ENV{ID_BUS}="cciss"
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
From daf32d32172e19e78754999b41c27b45e3629326 Mon Sep 17 00:00:00 2001
|
||||
From: Kay Sievers <kay.sievers@vrfy.org>
|
||||
Date: Thu, 31 Mar 2011 13:15:47 +0200
|
||||
Subject: [PATCH] systemd: let settle depend on trigger, do not block basic with trigger
|
||||
|
||||
---
|
||||
init/udev-settle.service.in | 15 +++++++++------
|
||||
init/udev-trigger.service.in | 1 -
|
||||
2 files changed, 9 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/init/udev-settle.service.in b/init/udev-settle.service.in
|
||||
index be06a39..bda8626 100644
|
||||
--- a/init/udev-settle.service.in
|
||||
+++ b/init/udev-settle.service.in
|
||||
@@ -1,15 +1,18 @@
|
||||
-# This barrier service is usually not enabled by default. If enabled,
|
||||
-# it acts as a barrier for basic.target -- so all later services will
|
||||
+# This service is usually not enabled by default. If enabled, it
|
||||
+# acts as a barrier for basic.target -- so all later services will
|
||||
# wait for udev completely finishing its coldplug run.
|
||||
#
|
||||
-# It might be enabled just unconditionally, or pulled-in on-demand by
|
||||
-# broken or non-hotplug-aware services that assume a fully populated
|
||||
-# /dev at startup.
|
||||
+# If needed, to work around broken or non-hotplug-aware services,
|
||||
+# it might be enabled unconditionally, or pulled-in on-demand by
|
||||
+# the services that assume a fully populated /dev at startup. It
|
||||
+# should not be used or pulled-in ever on systems without such
|
||||
+# legacy services running.
|
||||
|
||||
[Unit]
|
||||
Description=udev Wait for Complete Device Initialization
|
||||
DefaultDependencies=no
|
||||
-After=udev.service
|
||||
+Requires=udev.service
|
||||
+After=udev-trigger.service
|
||||
Before=basic.target
|
||||
|
||||
[Service]
|
||||
diff --git a/init/udev-trigger.service.in b/init/udev-trigger.service.in
|
||||
index 0ede317..745974a 100644
|
||||
--- a/init/udev-trigger.service.in
|
||||
+++ b/init/udev-trigger.service.in
|
||||
@@ -2,7 +2,6 @@
|
||||
Description=udev Coldplug all Devices
|
||||
Requires=udev.service
|
||||
After=udev.service
|
||||
-Before=basic.target
|
||||
DefaultDependencies=no
|
||||
|
||||
[Service]
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
From ff4a035a8aaba6a7b5b85c4b348886d72c42e84c Mon Sep 17 00:00:00 2001
|
||||
From: Lee, Chun-Yi <joeyli.kernel@gmail.com>
|
||||
Date: Thu, 31 Mar 2011 18:01:05 +0800
|
||||
Subject: [PATCH] Add rule for Acer Aspire One ZG8 to use acer-aspire_5720 keymap
|
||||
|
||||
Acer Aspire One ZG8's bluetooth HW key emit 0xD9 scancode, it must map
|
||||
to KEY_BLUETOOTH like Acer Aspire 5720. So, add rule for Acer Aspire One
|
||||
ZG8 use acer-aspire_5720 keymap.
|
||||
|
||||
Tested on Acer Aspire One ZG8 netbook.
|
||||
|
||||
Signed-off-by: Lee, Chun-Yi <jlee@novell.com>
|
||||
Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
|
||||
---
|
||||
extras/keymap/95-keymap.rules | 1 +
|
||||
1 files changed, 1 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/extras/keymap/95-keymap.rules b/extras/keymap/95-keymap.rules
|
||||
index 0c3ae38..44d5064 100644
|
||||
--- a/extras/keymap/95-keymap.rules
|
||||
+++ b/extras/keymap/95-keymap.rules
|
||||
@@ -100,6 +100,7 @@ ENV{DMI_VENDOR}=="Acer*", ATTR{[dmi/id]product_name}=="Aspire 6920", RUN+="keyma
|
||||
ENV{DMI_VENDOR}=="Acer*", ATTR{[dmi/id]product_name}=="Aspire 5920G", RUN+="keymap $name acer-aspire_5920g"
|
||||
ENV{DMI_VENDOR}=="Acer*", ATTR{[dmi/id]product_name}=="Aspire 5720*", RUN+="keymap $name acer-aspire_5720"
|
||||
ENV{DMI_VENDOR}=="Acer*", ATTR{[dmi/id]product_name}=="Aspire 8930", RUN+="keymap $name acer-aspire_8930"
|
||||
+ENV{DMI_VENDOR}=="Acer*", ATTR{[dmi/id]product_serial}=="ZG8*", RUN+="keymap $name acer-aspire_5720"
|
||||
|
||||
ENV{DMI_VENDOR}=="*BenQ*", ATTR{[dmi/id]product_name}=="*Joybook R22*", RUN+="keymap $name 0x6E wlan"
|
||||
|
||||
22
0005-udevd-add-N-to-optstring-in-getopt_long.patch
Normal file
22
0005-udevd-add-N-to-optstring-in-getopt_long.patch
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
From 6ee9b2cb8cf023253853f1c80e707598685b11f3 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Egerer <thomas.egerer@secunet.com>
|
||||
Date: Thu, 31 Mar 2011 17:25:31 +0200
|
||||
Subject: [PATCH] udevd: add 'N:' to optstring in getopt_long
|
||||
|
||||
---
|
||||
udev/udevd.c | 2 +-
|
||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/udev/udevd.c b/udev/udevd.c
|
||||
index 1871474..a8b339f 100644
|
||||
--- a/udev/udevd.c
|
||||
+++ b/udev/udevd.c
|
||||
@@ -1118,7 +1118,7 @@ int main(int argc, char *argv[])
|
||||
for (;;) {
|
||||
int option;
|
||||
|
||||
- option = getopt_long(argc, argv, "c:deDthV", options, NULL);
|
||||
+ option = getopt_long(argc, argv, "c:deDtN:hV", options, NULL);
|
||||
if (option == -1)
|
||||
break;
|
||||
|
||||
34
0006-Revert-Do-not-build-extras-with-disable-extras.patch
Normal file
34
0006-Revert-Do-not-build-extras-with-disable-extras.patch
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
From 9bb54267a1483e8f3b2de352c7be433f625e5606 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Pitt <martin.pitt@ubuntu.com>
|
||||
Date: Thu, 31 Mar 2011 19:23:19 +0200
|
||||
Subject: [PATCH] Revert "Do not build extras with --disable-extras"
|
||||
|
||||
This reverts commit 905818f5961446ac32d1b2d165185fffddc4915a.
|
||||
|
||||
We do want to build some extras, just not the ones with extra dependencies.
|
||||
Thanks to Juergen Daubert for pointing this out.
|
||||
---
|
||||
Makefile.am | 3 ---
|
||||
1 files changed, 0 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/Makefile.am b/Makefile.am
|
||||
index df70bf7..2c20f46 100644
|
||||
--- a/Makefile.am
|
||||
+++ b/Makefile.am
|
||||
@@ -225,7 +225,6 @@ dist_udevrules_DATA += \
|
||||
extras/rule_generator/75-cd-aliases-generator.rules \
|
||||
extras/rule_generator/75-persistent-net-generator.rules
|
||||
|
||||
-if ENABLE_EXTRAS
|
||||
# ------------------------------------------------------------------------------
|
||||
# firmware - firmware loading
|
||||
# ------------------------------------------------------------------------------
|
||||
@@ -314,8 +313,6 @@ extras_v4l_id_v4l_id_LDADD = libudev/libudev-private.la
|
||||
libexec_PROGRAMS += extras/v4l_id/v4l_id
|
||||
dist_udevrules_DATA += extras/v4l_id/60-persistent-v4l.rules
|
||||
|
||||
-endif # ENABLE_EXTRAS
|
||||
-
|
||||
# ------------------------------------------------------------------------------
|
||||
# qemu -- qemu/kvm guest tweaks
|
||||
# ------------------------------------------------------------------------------
|
||||
45
0007-Avoid-spinning-up-CD-on-pressing-eject-button.patch
Normal file
45
0007-Avoid-spinning-up-CD-on-pressing-eject-button.patch
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
From 55eb500cc5465babf1fd773dbcceeb90eeefd997 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Pitt <martin.pitt@ubuntu.com>
|
||||
Date: Mon, 4 Apr 2011 11:47:54 +0200
|
||||
Subject: [PATCH] Avoid spinning up CD on pressing eject button
|
||||
|
||||
When the CD tray door is locked and the hardware eject button is pressed, newer
|
||||
kernels (2.6.38+) will send out a change event with a DISK_EJECT_REQUEST==1
|
||||
property. Do not run cdrom_id and blkid in this case, as the media state and
|
||||
contents does not change, and this only needlessly spins up the drive again
|
||||
right before ejection.
|
||||
---
|
||||
extras/cdrom_id/60-cdrom_id.rules | 3 +++
|
||||
rules/rules.d/60-persistent-storage.rules | 4 ++--
|
||||
2 files changed, 5 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/extras/cdrom_id/60-cdrom_id.rules b/extras/cdrom_id/60-cdrom_id.rules
|
||||
index b3109f1..aedf6f0 100644
|
||||
--- a/extras/cdrom_id/60-cdrom_id.rules
|
||||
+++ b/extras/cdrom_id/60-cdrom_id.rules
|
||||
@@ -5,6 +5,9 @@ SUBSYSTEM!="block", GOTO="cdrom_end"
|
||||
KERNEL!="sr[0-9]*|xvd*", GOTO="cdrom_end"
|
||||
ENV{DEVTYPE}!="disk", GOTO="cdrom_end"
|
||||
|
||||
+# this is only a button press event
|
||||
+ENV{DISK_EJECT_REQUEST}=="?*", GOTO="cdrom_end"
|
||||
+
|
||||
KERNEL=="sr[0-9]*", ENV{ID_CDROM}="1"
|
||||
IMPORT{program}="cdrom_id --export $tempnode"
|
||||
|
||||
diff --git a/rules/rules.d/60-persistent-storage.rules b/rules/rules.d/60-persistent-storage.rules
|
||||
index 12fabef..05a405f 100644
|
||||
--- a/rules/rules.d/60-persistent-storage.rules
|
||||
+++ b/rules/rules.d/60-persistent-storage.rules
|
||||
@@ -62,9 +62,9 @@ ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PA
|
||||
ENV{DEVTYPE}=="disk", KERNEL!="sd*|sr*", ATTR{removable}=="1", GOTO="persistent_storage_end"
|
||||
|
||||
# probe filesystem metadata of optical drives which have a media inserted
|
||||
-KERNEL=="sr*", ENV{ID_CDROM_MEDIA_TRACK_COUNT_DATA}=="?*", ENV{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}=="?*", IMPORT{program}="/sbin/blkid -o udev -p -u noraid -O $env{ID_CDROM_MEDIA_SESSION_LAST_OFFSET} $tempnode"
|
||||
+KERNEL=="sr*", ENV{DISK_EJECT_REQUEST}!="?*", ENV{ID_CDROM_MEDIA_TRACK_COUNT_DATA}=="?*", ENV{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}=="?*", IMPORT{program}="/sbin/blkid -o udev -p -u noraid -O $env{ID_CDROM_MEDIA_SESSION_LAST_OFFSET} $tempnode"
|
||||
# single-session CDs do not have ID_CDROM_MEDIA_SESSION_LAST_OFFSET
|
||||
-KERNEL=="sr*", ENV{ID_CDROM_MEDIA_TRACK_COUNT_DATA}=="?*", ENV{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}=="", IMPORT{program}="/sbin/blkid -o udev -p -u noraid $tempnode"
|
||||
+KERNEL=="sr*", ENV{DISK_EJECT_REQUEST}!="?*", ENV{ID_CDROM_MEDIA_TRACK_COUNT_DATA}=="?*", ENV{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}=="", IMPORT{program}="/sbin/blkid -o udev -p -u noraid $tempnode"
|
||||
|
||||
# probe filesystem metadata of disks
|
||||
KERNEL!="sr*", IMPORT{program}="/sbin/blkid -o udev -p $tempnode"
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
From 5e0ec43fc40e3e6dd0e44a7d617846879e1dac9e Mon Sep 17 00:00:00 2001
|
||||
From: Seth Forshee <seth.forshee@canonical.com>
|
||||
Date: Tue, 5 Apr 2011 11:43:00 -0500
|
||||
Subject: [PATCH] keymap: Support Dell Latitude XT2 tablet-mode navigation keys
|
||||
|
||||
The XT2 has a rocker (up/down/enter) and back button on the side
|
||||
in tablet mode, none of which work currently. Add entries for
|
||||
these keys.
|
||||
|
||||
There is some overlap here with scan codes used in other Dell
|
||||
models, so these buttons are put in a new file specific to this
|
||||
model.
|
||||
|
||||
Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
|
||||
Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
|
||||
---
|
||||
Makefile.am | 1 +
|
||||
extras/keymap/95-keymap.rules | 1 +
|
||||
extras/keymap/keymaps/dell-latitude-xt2 | 4 ++++
|
||||
3 files changed, 6 insertions(+), 0 deletions(-)
|
||||
create mode 100644 extras/keymap/keymaps/dell-latitude-xt2
|
||||
|
||||
diff --git a/Makefile.am b/Makefile.am
|
||||
index 2c20f46..4244089 100644
|
||||
--- a/Makefile.am
|
||||
+++ b/Makefile.am
|
||||
@@ -568,6 +568,7 @@ dist_udevkeymap_DATA = \
|
||||
extras/keymap/keymaps/asus \
|
||||
extras/keymap/keymaps/compaq-e_evo \
|
||||
extras/keymap/keymaps/dell \
|
||||
+ extras/keymap/keymaps/dell-latitude-xt2 \
|
||||
extras/keymap/keymaps/everex-xt5000 \
|
||||
extras/keymap/keymaps/fujitsu-amilo_pa_2548 \
|
||||
extras/keymap/keymaps/fujitsu-amilo_pro_edition_v3505 \
|
||||
diff --git a/extras/keymap/95-keymap.rules b/extras/keymap/95-keymap.rules
|
||||
index 44d5064..350f111 100644
|
||||
--- a/extras/keymap/95-keymap.rules
|
||||
+++ b/extras/keymap/95-keymap.rules
|
||||
@@ -67,6 +67,7 @@ LABEL="keyboard_vendorcheck"
|
||||
|
||||
ENV{DMI_VENDOR}=="Dell*", RUN+="keymap $name dell"
|
||||
ENV{DMI_VENDOR}=="Dell*", ATTR{[dmi/id]product_name}=="Inspiron 910|Inspiron 1010|Inspiron 1011|Inspiron 1012|Inspiron 1110|Inspiron 1210", RUN+="keymap $name 0x84 wlan"
|
||||
+ENV{DMI_VENDOR}=="Dell*", ATTR{[dmi/id]product_name}=="Latitude XT2", RUN+="keymap $name dell-latitude-xt2"
|
||||
|
||||
ENV{DMI_VENDOR}=="Compaq*", ATTR{[dmi/id]product_name}=="*E500*|*Evo N*", RUN+="keymap $name compaq-e_evo"
|
||||
|
||||
diff --git a/extras/keymap/keymaps/dell-latitude-xt2 b/extras/keymap/keymaps/dell-latitude-xt2
|
||||
new file mode 100644
|
||||
index 0000000..39872f5
|
||||
--- /dev/null
|
||||
+++ b/extras/keymap/keymaps/dell-latitude-xt2
|
||||
@@ -0,0 +1,4 @@
|
||||
+0x9B up # tablet rocker up
|
||||
+0x9E enter # tablet rocker press
|
||||
+0x9F back # tablet back
|
||||
+0xA3 down # tablet rocker down
|
||||
204
0009-selinux-do-not-label-files-in-runtime-dir.patch
Normal file
204
0009-selinux-do-not-label-files-in-runtime-dir.patch
Normal file
|
|
@ -0,0 +1,204 @@
|
|||
From 51f43b53293c4cc64c2a55598491c6cbf27b6bd5 Mon Sep 17 00:00:00 2001
|
||||
From: Kay Sievers <kay.sievers@vrfy.org>
|
||||
Date: Fri, 8 Apr 2011 01:03:49 +0200
|
||||
Subject: [PATCH] selinux: do not label files in runtime dir
|
||||
|
||||
Do not label any files in the udev runtime directory, but only nodes,
|
||||
links and directories below /dev.
|
||||
|
||||
In case the runtime directory falls back to /dev/.udev, label this
|
||||
directory once at udevd startup, but never anything below it.
|
||||
---
|
||||
libudev/libudev-private.h | 1 +
|
||||
libudev/libudev-queue-private.c | 2 --
|
||||
libudev/libudev-util-private.c | 18 +++++++++++++++---
|
||||
udev/udev-node.c | 6 +++---
|
||||
udev/udevd.c | 18 ++++++++----------
|
||||
5 files changed, 27 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/libudev/libudev-private.h b/libudev/libudev-private.h
|
||||
index 7078b0f..8495f9a 100644
|
||||
--- a/libudev/libudev-private.h
|
||||
+++ b/libudev/libudev-private.h
|
||||
@@ -220,6 +220,7 @@ uint64_t util_string_bloom64(const char *str);
|
||||
|
||||
/* libudev-util-private.c */
|
||||
int util_create_path(struct udev *udev, const char *path);
|
||||
+int util_create_path_selinux(struct udev *udev, const char *path);
|
||||
int util_delete_path(struct udev *udev, const char *path);
|
||||
int util_unlink_secure(struct udev *udev, const char *filename);
|
||||
uid_t util_lookup_user(struct udev *udev, const char *user);
|
||||
diff --git a/libudev/libudev-queue-private.c b/libudev/libudev-queue-private.c
|
||||
index a714572..2f1afec 100644
|
||||
--- a/libudev/libudev-queue-private.c
|
||||
+++ b/libudev/libudev-queue-private.c
|
||||
@@ -409,9 +409,7 @@ static void update_failed(struct udev_queue_export *udev_queue_export,
|
||||
/* record event in the failed directory */
|
||||
udev_queue_export->failed_count++;
|
||||
util_create_path(udev, filename);
|
||||
- udev_selinux_setfscreatecon(udev, filename, S_IFLNK);
|
||||
symlink(udev_device_get_devpath(udev_device), filename);
|
||||
- udev_selinux_resetfscreatecon(udev);
|
||||
break;
|
||||
|
||||
case DEVICE_QUEUED:
|
||||
diff --git a/libudev/libudev-util-private.c b/libudev/libudev-util-private.c
|
||||
index 6b68b6a..19f979e 100644
|
||||
--- a/libudev/libudev-util-private.c
|
||||
+++ b/libudev/libudev-util-private.c
|
||||
@@ -25,7 +25,7 @@
|
||||
#include "libudev.h"
|
||||
#include "libudev-private.h"
|
||||
|
||||
-int util_create_path(struct udev *udev, const char *path)
|
||||
+static int create_path(struct udev *udev, const char *path, bool selinux)
|
||||
{
|
||||
char p[UTIL_PATH_SIZE];
|
||||
char *pos;
|
||||
@@ -55,7 +55,8 @@ int util_create_path(struct udev *udev, const char *path)
|
||||
return err;
|
||||
|
||||
dbg(udev, "mkdir '%s'\n", p);
|
||||
- udev_selinux_setfscreatecon(udev, p, S_IFDIR|0755);
|
||||
+ if (selinux)
|
||||
+ udev_selinux_setfscreatecon(udev, p, S_IFDIR|0755);
|
||||
err = mkdir(p, 0755);
|
||||
if (err != 0) {
|
||||
err = -errno;
|
||||
@@ -66,10 +67,21 @@ int util_create_path(struct udev *udev, const char *path)
|
||||
err = -ENOTDIR;
|
||||
}
|
||||
}
|
||||
- udev_selinux_resetfscreatecon(udev);
|
||||
+ if (selinux)
|
||||
+ udev_selinux_resetfscreatecon(udev);
|
||||
return err;
|
||||
}
|
||||
|
||||
+int util_create_path(struct udev *udev, const char *path)
|
||||
+{
|
||||
+ return create_path(udev, path, false);
|
||||
+}
|
||||
+
|
||||
+int util_create_path_selinux(struct udev *udev, const char *path)
|
||||
+{
|
||||
+ return create_path(udev, path, true);
|
||||
+}
|
||||
+
|
||||
int util_delete_path(struct udev *udev, const char *path)
|
||||
{
|
||||
char p[UTIL_PATH_SIZE];
|
||||
diff --git a/udev/udev-node.c b/udev/udev-node.c
|
||||
index ab4e932..5e791ff 100644
|
||||
--- a/udev/udev-node.c
|
||||
+++ b/udev/udev-node.c
|
||||
@@ -96,7 +96,7 @@ int udev_node_mknod(struct udev_device *dev, const char *file, mode_t mode, uid_
|
||||
} else {
|
||||
info(udev, "mknod '%s' %u:%u %#o\n", file, major(devnum), minor(devnum), mode);
|
||||
do {
|
||||
- err = util_create_path(udev, file);
|
||||
+ err = util_create_path_selinux(udev, file);
|
||||
if (err != 0 && err != -ENOENT)
|
||||
break;
|
||||
udev_selinux_setfscreatecon(udev, file, mode);
|
||||
@@ -184,7 +184,7 @@ static int node_symlink(struct udev *udev, const char *node, const char *slink)
|
||||
} else {
|
||||
info(udev, "creating symlink '%s' to '%s'\n", slink, target);
|
||||
do {
|
||||
- err = util_create_path(udev, slink);
|
||||
+ err = util_create_path_selinux(udev, slink);
|
||||
if (err != 0 && err != -ENOENT)
|
||||
break;
|
||||
udev_selinux_setfscreatecon(udev, slink, S_IFLNK);
|
||||
@@ -201,7 +201,7 @@ static int node_symlink(struct udev *udev, const char *node, const char *slink)
|
||||
util_strscpyl(slink_tmp, sizeof(slink_tmp), slink, TMP_FILE_EXT, NULL);
|
||||
unlink(slink_tmp);
|
||||
do {
|
||||
- err = util_create_path(udev, slink_tmp);
|
||||
+ err = util_create_path_selinux(udev, slink_tmp);
|
||||
if (err != 0 && err != -ENOENT)
|
||||
break;
|
||||
udev_selinux_setfscreatecon(udev, slink_tmp, S_IFLNK);
|
||||
diff --git a/udev/udevd.c b/udev/udevd.c
|
||||
index a8b339f..df5c199 100644
|
||||
--- a/udev/udevd.c
|
||||
+++ b/udev/udevd.c
|
||||
@@ -822,7 +822,7 @@ static void static_dev_create_from_modules(struct udev *udev)
|
||||
continue;
|
||||
|
||||
util_strscpyl(filename, sizeof(filename), udev_get_dev_path(udev), "/", devname, NULL);
|
||||
- util_create_path(udev, filename);
|
||||
+ util_create_path_selinux(udev, filename);
|
||||
udev_selinux_setfscreatecon(udev, filename, mode);
|
||||
info(udev, "mknod '%s' %c%u:%u\n", filename, type, maj, min);
|
||||
if (mknod(filename, mode, makedev(maj, min)) < 0 && errno == EEXIST)
|
||||
@@ -833,7 +833,7 @@ static void static_dev_create_from_modules(struct udev *udev)
|
||||
fclose(f);
|
||||
}
|
||||
|
||||
-static int copy_dir(struct udev *udev, DIR *dir_from, DIR *dir_to, int maxdepth)
|
||||
+static int copy_dev_dir(struct udev *udev, DIR *dir_from, DIR *dir_to, int maxdepth)
|
||||
{
|
||||
struct dirent *dent;
|
||||
|
||||
@@ -886,7 +886,7 @@ static int copy_dir(struct udev *udev, DIR *dir_from, DIR *dir_to, int maxdepth)
|
||||
continue;
|
||||
}
|
||||
|
||||
- copy_dir(udev, dir2_from, dir2_to, maxdepth-1);
|
||||
+ copy_dev_dir(udev, dir2_from, dir2_to, maxdepth-1);
|
||||
|
||||
closedir(dir2_to);
|
||||
closedir(dir2_from);
|
||||
@@ -930,7 +930,7 @@ static void static_dev_create_from_devices(struct udev *udev, DIR *dir)
|
||||
dir_from = opendir(LIBEXECDIR "/devices");
|
||||
if (dir_from == NULL)
|
||||
return;
|
||||
- copy_dir(udev, dir_from, dir, 8);
|
||||
+ copy_dev_dir(udev, dir_from, dir, 8);
|
||||
closedir(dir_from);
|
||||
}
|
||||
|
||||
@@ -985,9 +985,7 @@ static int convert_db(struct udev *udev)
|
||||
|
||||
/* make sure we do not get here again */
|
||||
util_create_path(udev, filename);
|
||||
- udev_selinux_setfscreatecon(udev, udev_get_run_path(udev), S_IFDIR|0755);
|
||||
mkdir(filename, 0755);
|
||||
- udev_selinux_resetfscreatecon(udev);
|
||||
|
||||
/* old database */
|
||||
util_strscpyl(filename, sizeof(filename), udev_get_dev_path(udev), "/.udev/db", NULL);
|
||||
@@ -1097,9 +1095,7 @@ int main(int argc, char *argv[])
|
||||
/* make sure, that our runtime dir exists and is writable */
|
||||
if (utimensat(AT_FDCWD, udev_get_run_config_path(udev), NULL, 0) < 0) {
|
||||
/* try to create our own subdirectory, do not create parent directories */
|
||||
- udev_selinux_setfscreatecon(udev, udev_get_run_config_path(udev), S_IFDIR|0755);
|
||||
mkdir(udev_get_run_config_path(udev), 0755);
|
||||
- udev_selinux_resetfscreatecon(udev);
|
||||
|
||||
if (utimensat(AT_FDCWD, udev_get_run_config_path(udev), NULL, 0) >= 0) {
|
||||
/* directory seems writable now */
|
||||
@@ -1111,8 +1107,12 @@ int main(int argc, char *argv[])
|
||||
util_strscpyl(filename, sizeof(filename), udev_get_dev_path(udev), "/.udev", NULL);
|
||||
if (udev_set_run_path(udev, filename) == NULL)
|
||||
goto exit;
|
||||
+ mkdir(udev_get_run_path(udev), 0755);
|
||||
}
|
||||
}
|
||||
+ /* relabel runtime dir only if it resides below /dev */
|
||||
+ if (strncmp(udev_get_run_path(udev), udev_get_dev_path(udev), strlen(udev_get_dev_path(udev))) == 0)
|
||||
+ udev_selinux_lsetfilecon(udev, udev_get_run_path(udev), 0755);
|
||||
info(udev, "runtime dir '%s'\n", udev_get_run_path(udev));
|
||||
|
||||
for (;;) {
|
||||
@@ -1281,9 +1281,7 @@ int main(int argc, char *argv[])
|
||||
util_strscpyl(filename, sizeof(filename), udev_get_run_path(udev), "/rules.d", NULL);
|
||||
if (stat(filename, &statbuf) != 0) {
|
||||
util_create_path(udev, filename);
|
||||
- udev_selinux_setfscreatecon(udev, filename, S_IFDIR|0755);
|
||||
mkdir(filename, 0755);
|
||||
- udev_selinux_resetfscreatecon(udev);
|
||||
}
|
||||
inotify_add_watch(pfd[FD_INOTIFY].fd, filename,
|
||||
IN_DELETE | IN_MOVE | IN_CLOSE_WRITE);
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
From 960250952193db522b8ced336bf998bd7e8e4a31 Mon Sep 17 00:00:00 2001
|
||||
From: Kay Sievers <kay.sievers@vrfy.org>
|
||||
Date: Fri, 8 Apr 2011 03:08:16 +0200
|
||||
Subject: [PATCH] selinux: firmware - do not label files in runtime dir
|
||||
|
||||
---
|
||||
extras/firmware/firmware.c | 2 --
|
||||
1 files changed, 0 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/extras/firmware/firmware.c b/extras/firmware/firmware.c
|
||||
index 8199820..f2df76c 100644
|
||||
--- a/extras/firmware/firmware.c
|
||||
+++ b/extras/firmware/firmware.c
|
||||
@@ -159,11 +159,9 @@ int main(int argc, char **argv)
|
||||
err = util_create_path(udev, misspath);
|
||||
if (err != 0 && err != -ENOENT)
|
||||
break;
|
||||
- udev_selinux_setfscreatecon(udev, misspath, S_IFLNK);
|
||||
err = symlink(devpath, misspath);
|
||||
if (err != 0)
|
||||
err = -errno;
|
||||
- udev_selinux_resetfscreatecon(udev);
|
||||
} while (err == -ENOENT);
|
||||
rc = 2;
|
||||
set_loading(udev, loadpath, "-1");
|
||||
6
Makefile.git
Normal file
6
Makefile.git
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
Patch:
|
||||
@for i in 00*.patch; do n=$$[$$(echo $$i|cut -f 1 -d '-'|sed -e 's#^0*##')]; echo "Patch$$n: $$i";done
|
||||
|
||||
patch:
|
||||
@for i in 00*.patch; do n=$$[$$(echo $$i|cut -f 1 -d '-'|sed -e 's#^0*##')]; echo "%patch$$n -p1 -b .git$$n";done
|
||||
|
||||
|
|
@ -1 +0,0 @@
|
|||
obsolete udev, it is replaced by systemd
|
||||
1
mirrors
Normal file
1
mirrors
Normal file
|
|
@ -0,0 +1 @@
|
|||
ftp://ftp.kernel.org/pub/linux/utils/kernel/hotplug/
|
||||
1
sources
Normal file
1
sources
Normal file
|
|
@ -0,0 +1 @@
|
|||
4b37e1222f06c14c24147de346aa0bad udev-167.tar.bz2
|
||||
82
start_udev
Executable file
82
start_udev
Executable file
|
|
@ -0,0 +1,82 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# start_udev
|
||||
#
|
||||
# script to initialize /dev by using udev.
|
||||
#
|
||||
# Copyright (C) 2004 Greg Kroah-Hartman <greg@kroah.com>
|
||||
#
|
||||
# Released under the GPL v2 only.
|
||||
#
|
||||
# This needs to be run at the earliest possible point in the boot
|
||||
# process.
|
||||
#
|
||||
# Based on the udev init.d script
|
||||
#
|
||||
# Thanks go out to the Gentoo developers for proving
|
||||
# that this is possible to do.
|
||||
#
|
||||
# Yes, it's very verbose, feel free to turn off all of the echo calls,
|
||||
# they were there to make me feel better that everything was working
|
||||
# properly during development...
|
||||
#
|
||||
# don't use udev if sysfs is not mounted.
|
||||
|
||||
# if we run with systemctl, just wait for settle
|
||||
if [ -x "$(type -P systemctl)" ]; then
|
||||
systemctl start udev-settle.service &>/dev/null && exit 0
|
||||
fi
|
||||
|
||||
export TZ=/etc/localtime
|
||||
|
||||
[ -d /sys/class ] || exit 1
|
||||
[ -r /proc/mounts ] || exit 1
|
||||
[ -x /sbin/udevd ] || exit 1
|
||||
|
||||
. /etc/init.d/functions
|
||||
|
||||
prog=udev
|
||||
|
||||
touch_recursive() {
|
||||
( cd $1;
|
||||
for i in *; do
|
||||
[[ -c "$i" || -b "$i" ]] && touch --no-create "$i"
|
||||
[ -d "$i" ] && touch_recursive "$i"
|
||||
done )
|
||||
return 0
|
||||
}
|
||||
|
||||
ret=0
|
||||
STRING=$"Starting $prog: "
|
||||
# propagate /dev from /sys
|
||||
echo -n "$STRING"
|
||||
|
||||
# turn off hotplug binary calling
|
||||
if ! [ -x /sbin/hotplug ]; then
|
||||
if [ -e /sys/kernel/uevent_helper ]; then
|
||||
echo -e '\000\000\000\000' > /sys/kernel/uevent_helper
|
||||
elif [ -e /proc/sys/kernel/hotplug ]; then
|
||||
echo -e '\000\000\000\000' > /proc/sys/kernel/hotplug
|
||||
fi
|
||||
fi
|
||||
|
||||
/sbin/udevd -d
|
||||
|
||||
ret=$[$ret + $?]
|
||||
|
||||
/sbin/udevadm trigger --type=subsystems --action=add
|
||||
/sbin/udevadm trigger --type=devices --action=add
|
||||
/sbin/udevadm settle
|
||||
ret=$[$ret + $?]
|
||||
|
||||
# touch all device files for timezone glitches
|
||||
# "find" is in /usr/bin and might not be available
|
||||
if [ -f /etc/sysconfig/clock ]; then
|
||||
. /etc/sysconfig/clock
|
||||
[[ "$UTC" == "false" || "$UTC" == "no" ]] \
|
||||
&& touch_recursive /dev > "/dev/null" 2>&1
|
||||
fi
|
||||
|
||||
[ $ret -eq 0 ] && success $"$STRING" || failure $"$STRING"
|
||||
echo
|
||||
exit 0
|
||||
208
udev-167-selinux_label.patch
Normal file
208
udev-167-selinux_label.patch
Normal file
|
|
@ -0,0 +1,208 @@
|
|||
From 51f43b53293c4cc64c2a55598491c6cbf27b6bd5 Mon Sep 17 00:00:00 2001
|
||||
From: Kay Sievers <kay.sievers@vrfy.org>
|
||||
Date: Fri, 8 Apr 2011 01:03:49 +0200
|
||||
Subject: [PATCH] selinux: do not label files in runtime dir
|
||||
|
||||
Do not label any files in the udev runtime directory, but only nodes,
|
||||
links and directories below /dev.
|
||||
|
||||
In case the runtime directory falls back to /dev/.udev, label this
|
||||
directory once at udevd startup, but never anything below it.
|
||||
---
|
||||
libudev/libudev-private.h | 1 +
|
||||
libudev/libudev-queue-private.c | 2 --
|
||||
libudev/libudev-util-private.c | 18 +++++++++++++++---
|
||||
udev/udev-node.c | 6 +++---
|
||||
udev/udevd.c | 18 ++++++++----------
|
||||
5 files changed, 27 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/libudev/libudev-private.h b/libudev/libudev-private.h
|
||||
index 7078b0f..8495f9a 100644
|
||||
--- a/libudev/libudev-private.h
|
||||
+++ b/libudev/libudev-private.h
|
||||
@@ -220,6 +220,7 @@ uint64_t util_string_bloom64(const char *str);
|
||||
|
||||
/* libudev-util-private.c */
|
||||
int util_create_path(struct udev *udev, const char *path);
|
||||
+int util_create_path_selinux(struct udev *udev, const char *path);
|
||||
int util_delete_path(struct udev *udev, const char *path);
|
||||
int util_unlink_secure(struct udev *udev, const char *filename);
|
||||
uid_t util_lookup_user(struct udev *udev, const char *user);
|
||||
diff --git a/libudev/libudev-queue-private.c b/libudev/libudev-queue-private.c
|
||||
index a714572..2f1afec 100644
|
||||
--- a/libudev/libudev-queue-private.c
|
||||
+++ b/libudev/libudev-queue-private.c
|
||||
@@ -409,9 +409,7 @@ static void update_failed(struct udev_queue_export *udev_queue_export,
|
||||
/* record event in the failed directory */
|
||||
udev_queue_export->failed_count++;
|
||||
util_create_path(udev, filename);
|
||||
- udev_selinux_setfscreatecon(udev, filename, S_IFLNK);
|
||||
symlink(udev_device_get_devpath(udev_device), filename);
|
||||
- udev_selinux_resetfscreatecon(udev);
|
||||
break;
|
||||
|
||||
case DEVICE_QUEUED:
|
||||
diff --git a/libudev/libudev-util-private.c b/libudev/libudev-util-private.c
|
||||
index 6b68b6a..19f979e 100644
|
||||
--- a/libudev/libudev-util-private.c
|
||||
+++ b/libudev/libudev-util-private.c
|
||||
@@ -25,7 +25,7 @@
|
||||
#include "libudev.h"
|
||||
#include "libudev-private.h"
|
||||
|
||||
-int util_create_path(struct udev *udev, const char *path)
|
||||
+static int create_path(struct udev *udev, const char *path, bool selinux)
|
||||
{
|
||||
char p[UTIL_PATH_SIZE];
|
||||
char *pos;
|
||||
@@ -55,7 +55,8 @@ int util_create_path(struct udev *udev, const char *path)
|
||||
return err;
|
||||
|
||||
dbg(udev, "mkdir '%s'\n", p);
|
||||
- udev_selinux_setfscreatecon(udev, p, S_IFDIR|0755);
|
||||
+ if (selinux)
|
||||
+ udev_selinux_setfscreatecon(udev, p, S_IFDIR|0755);
|
||||
err = mkdir(p, 0755);
|
||||
if (err != 0) {
|
||||
err = -errno;
|
||||
@@ -66,10 +67,21 @@ int util_create_path(struct udev *udev, const char *path)
|
||||
err = -ENOTDIR;
|
||||
}
|
||||
}
|
||||
- udev_selinux_resetfscreatecon(udev);
|
||||
+ if (selinux)
|
||||
+ udev_selinux_resetfscreatecon(udev);
|
||||
return err;
|
||||
}
|
||||
|
||||
+int util_create_path(struct udev *udev, const char *path)
|
||||
+{
|
||||
+ return create_path(udev, path, false);
|
||||
+}
|
||||
+
|
||||
+int util_create_path_selinux(struct udev *udev, const char *path)
|
||||
+{
|
||||
+ return create_path(udev, path, true);
|
||||
+}
|
||||
+
|
||||
int util_delete_path(struct udev *udev, const char *path)
|
||||
{
|
||||
char p[UTIL_PATH_SIZE];
|
||||
diff --git a/udev/udev-node.c b/udev/udev-node.c
|
||||
index ab4e932..5e791ff 100644
|
||||
--- a/udev/udev-node.c
|
||||
+++ b/udev/udev-node.c
|
||||
@@ -96,7 +96,7 @@ int udev_node_mknod(struct udev_device *dev, const char *file, mode_t mode, uid_
|
||||
} else {
|
||||
info(udev, "mknod '%s' %u:%u %#o\n", file, major(devnum), minor(devnum), mode);
|
||||
do {
|
||||
- err = util_create_path(udev, file);
|
||||
+ err = util_create_path_selinux(udev, file);
|
||||
if (err != 0 && err != -ENOENT)
|
||||
break;
|
||||
udev_selinux_setfscreatecon(udev, file, mode);
|
||||
@@ -184,7 +184,7 @@ static int node_symlink(struct udev *udev, const char *node, const char *slink)
|
||||
} else {
|
||||
info(udev, "creating symlink '%s' to '%s'\n", slink, target);
|
||||
do {
|
||||
- err = util_create_path(udev, slink);
|
||||
+ err = util_create_path_selinux(udev, slink);
|
||||
if (err != 0 && err != -ENOENT)
|
||||
break;
|
||||
udev_selinux_setfscreatecon(udev, slink, S_IFLNK);
|
||||
@@ -201,7 +201,7 @@ static int node_symlink(struct udev *udev, const char *node, const char *slink)
|
||||
util_strscpyl(slink_tmp, sizeof(slink_tmp), slink, TMP_FILE_EXT, NULL);
|
||||
unlink(slink_tmp);
|
||||
do {
|
||||
- err = util_create_path(udev, slink_tmp);
|
||||
+ err = util_create_path_selinux(udev, slink_tmp);
|
||||
if (err != 0 && err != -ENOENT)
|
||||
break;
|
||||
udev_selinux_setfscreatecon(udev, slink_tmp, S_IFLNK);
|
||||
diff --git a/udev/udevd.c b/udev/udevd.c
|
||||
index a8b339f..df5c199 100644
|
||||
--- a/udev/udevd.c
|
||||
+++ b/udev/udevd.c
|
||||
@@ -822,7 +822,7 @@ static void static_dev_create_from_modules(struct udev *udev)
|
||||
continue;
|
||||
|
||||
util_strscpyl(filename, sizeof(filename), udev_get_dev_path(udev), "/", devname, NULL);
|
||||
- util_create_path(udev, filename);
|
||||
+ util_create_path_selinux(udev, filename);
|
||||
udev_selinux_setfscreatecon(udev, filename, mode);
|
||||
info(udev, "mknod '%s' %c%u:%u\n", filename, type, maj, min);
|
||||
if (mknod(filename, mode, makedev(maj, min)) < 0 && errno == EEXIST)
|
||||
@@ -833,7 +833,7 @@ static void static_dev_create_from_modules(struct udev *udev)
|
||||
fclose(f);
|
||||
}
|
||||
|
||||
-static int copy_dir(struct udev *udev, DIR *dir_from, DIR *dir_to, int maxdepth)
|
||||
+static int copy_dev_dir(struct udev *udev, DIR *dir_from, DIR *dir_to, int maxdepth)
|
||||
{
|
||||
struct dirent *dent;
|
||||
|
||||
@@ -886,7 +886,7 @@ static int copy_dir(struct udev *udev, DIR *dir_from, DIR *dir_to, int maxdepth)
|
||||
continue;
|
||||
}
|
||||
|
||||
- copy_dir(udev, dir2_from, dir2_to, maxdepth-1);
|
||||
+ copy_dev_dir(udev, dir2_from, dir2_to, maxdepth-1);
|
||||
|
||||
closedir(dir2_to);
|
||||
closedir(dir2_from);
|
||||
@@ -930,7 +930,7 @@ static void static_dev_create_from_devices(struct udev *udev, DIR *dir)
|
||||
dir_from = opendir(LIBEXECDIR "/devices");
|
||||
if (dir_from == NULL)
|
||||
return;
|
||||
- copy_dir(udev, dir_from, dir, 8);
|
||||
+ copy_dev_dir(udev, dir_from, dir, 8);
|
||||
closedir(dir_from);
|
||||
}
|
||||
|
||||
@@ -985,9 +985,7 @@ static int convert_db(struct udev *udev)
|
||||
|
||||
/* make sure we do not get here again */
|
||||
util_create_path(udev, filename);
|
||||
- udev_selinux_setfscreatecon(udev, udev_get_run_path(udev), S_IFDIR|0755);
|
||||
mkdir(filename, 0755);
|
||||
- udev_selinux_resetfscreatecon(udev);
|
||||
|
||||
/* old database */
|
||||
util_strscpyl(filename, sizeof(filename), udev_get_dev_path(udev), "/.udev/db", NULL);
|
||||
@@ -1097,9 +1095,7 @@ int main(int argc, char *argv[])
|
||||
/* make sure, that our runtime dir exists and is writable */
|
||||
if (utimensat(AT_FDCWD, udev_get_run_config_path(udev), NULL, 0) < 0) {
|
||||
/* try to create our own subdirectory, do not create parent directories */
|
||||
- udev_selinux_setfscreatecon(udev, udev_get_run_config_path(udev), S_IFDIR|0755);
|
||||
mkdir(udev_get_run_config_path(udev), 0755);
|
||||
- udev_selinux_resetfscreatecon(udev);
|
||||
|
||||
if (utimensat(AT_FDCWD, udev_get_run_config_path(udev), NULL, 0) >= 0) {
|
||||
/* directory seems writable now */
|
||||
@@ -1111,8 +1107,12 @@ int main(int argc, char *argv[])
|
||||
util_strscpyl(filename, sizeof(filename), udev_get_dev_path(udev), "/.udev", NULL);
|
||||
if (udev_set_run_path(udev, filename) == NULL)
|
||||
goto exit;
|
||||
+ mkdir(udev_get_run_path(udev), 0755);
|
||||
}
|
||||
}
|
||||
+ /* relabel runtime dir only if it resides below /dev */
|
||||
+ if (strncmp(udev_get_run_path(udev), udev_get_dev_path(udev), strlen(udev_get_dev_path(udev))) == 0)
|
||||
+ udev_selinux_lsetfilecon(udev, udev_get_run_path(udev), 0755);
|
||||
info(udev, "runtime dir '%s'\n", udev_get_run_path(udev));
|
||||
|
||||
for (;;) {
|
||||
@@ -1281,9 +1281,7 @@ int main(int argc, char *argv[])
|
||||
util_strscpyl(filename, sizeof(filename), udev_get_run_path(udev), "/rules.d", NULL);
|
||||
if (stat(filename, &statbuf) != 0) {
|
||||
util_create_path(udev, filename);
|
||||
- udev_selinux_setfscreatecon(udev, filename, S_IFDIR|0755);
|
||||
mkdir(filename, 0755);
|
||||
- udev_selinux_resetfscreatecon(udev);
|
||||
}
|
||||
inotify_add_watch(pfd[FD_INOTIFY].fd, filename,
|
||||
IN_DELETE | IN_MOVE | IN_CLOSE_WRITE);
|
||||
--
|
||||
1.7.4.4
|
||||
|
||||
|
||||
65
udev-olpc-keymap-update.patch
Normal file
65
udev-olpc-keymap-update.patch
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
From 00fc377e7a6b1997db346c8de51cbf05cad48376 Mon Sep 17 00:00:00 2001
|
||||
From: Paul Fox <pgf@laptop.org>
|
||||
Date: Mon, 22 Aug 2011 06:39:06 +0200
|
||||
Subject: [PATCH] keymap: update the OLPC keymap for correct function key
|
||||
behavior
|
||||
|
||||
New mappings were needed when the mechanical keyboard was
|
||||
introduced, and GNOME was made a peer to the sugar desktop.
|
||||
see http://lists.laptop.org/pipermail/devel/2010-July/029384.html
|
||||
---
|
||||
extras/keymap/keymaps/olpc-xo | 38 ++++++++++++++++++++++++++------------
|
||||
1 files changed, 26 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/extras/keymap/keymaps/olpc-xo b/extras/keymap/keymaps/olpc-xo
|
||||
index 7fe0662..34434a1 100644
|
||||
--- a/extras/keymap/keymaps/olpc-xo
|
||||
+++ b/extras/keymap/keymaps/olpc-xo
|
||||
@@ -2,18 +2,32 @@
|
||||
0x81 fn_esc
|
||||
0xF9 camera
|
||||
0xF8 sound # Fn-CAMERA = Mic
|
||||
-0xBB fn_f1
|
||||
-0xBC fn_f2
|
||||
-0xBD fn_f3
|
||||
-0xBE fn_f4
|
||||
-0xBF fn_f5
|
||||
-0xC0 fn_f6
|
||||
-0xC1 fn_f7
|
||||
-0xC2 fn_f8
|
||||
-0xC3 fn_f9
|
||||
-0xC4 fn_f10
|
||||
-0xD7 fn_f11
|
||||
-0xD8 fn_f12
|
||||
+
|
||||
+
|
||||
+# Function key mappings, as per
|
||||
+# http://dev.laptop.org/ticket/10213#comment:20
|
||||
+#
|
||||
+# Unmodified F1-F8 produce F1-F8, so no remap necessary.
|
||||
+# Unmodified F9-F12 control brightness and volume.
|
||||
+0x43 brightnessdown
|
||||
+0x44 brightnessup
|
||||
+0x57 volumedown
|
||||
+0x58 volumeup
|
||||
+
|
||||
+# fn-modified fkeys all produce the unmodified version of the key.
|
||||
+0xBB f1
|
||||
+0xBC f2
|
||||
+0xBD f3
|
||||
+0xBE f4
|
||||
+0xBF f5
|
||||
+0xC0 f6
|
||||
+0xC1 f7
|
||||
+0xC2 f8
|
||||
+0xC3 f9
|
||||
+0xC4 f10
|
||||
+0xD7 f11
|
||||
+0xD8 f12
|
||||
+
|
||||
|
||||
# Using F13-F21 for the .5 F keys right now.
|
||||
0xF7 f13
|
||||
--
|
||||
1.7.4.4
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue