From a540bc715bde98a5e14f21d879fbb99999dc4b2b Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Wed, 30 Mar 2011 17:36:11 +0200 Subject: [PATCH 1/6] removed libxslt buildreq and touch man pages, to prevent rebuild --- udev.spec | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/udev.spec b/udev.spec index f5117a2..be8d0a9 100644 --- a/udev.spec +++ b/udev.spec @@ -41,7 +41,6 @@ BuildRequires: sed libselinux-devel >= 0:1.17.9-2 flex libsepol-devel BuildRequires: glib2-devel bison findutils BuildRequires: gperf libtool BuildRequires: libusb-devel libacl-devel -BuildRequires: libxslt BuildRequires: hwdata BuildRequires: gobject-introspection-devel >= 0.6.2 BuildRequires: gtk-doc @@ -121,6 +120,9 @@ glib-based applications using libudev functionality. %patch4 -p1 -b .label %build +# prevent man pages from re-building (xmlto) +find . -name "*.[1-8]" -exec touch '{}' \; + export CFLAGS="$CFLAGS $RPM_OPT_FLAGS -fPIE -DPIE -pie -Wl,-z,relro -Wl,-z,now" # prevent man pages from re-building (xmlto) From 36eba4b06ee305fc854dd9b2da8ccd0090b9d132 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Thu, 31 Mar 2011 18:30:08 +0200 Subject: [PATCH 2/6] udev.spec: removed gtk-doc --- udev.spec | 1 - 1 file changed, 1 deletion(-) diff --git a/udev.spec b/udev.spec index be8d0a9..ad3e607 100644 --- a/udev.spec +++ b/udev.spec @@ -43,7 +43,6 @@ BuildRequires: gperf libtool BuildRequires: libusb-devel libacl-devel BuildRequires: hwdata BuildRequires: gobject-introspection-devel >= 0.6.2 -BuildRequires: gtk-doc BuildRequires: usbutils >= 0.82 BuildRequires: libtool >= 2.2.6 BuildRequires: pkgconfig From 8bbeb28211b703101615348da15a501c11e5b81b Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Mon, 11 Apr 2011 12:15:57 +0200 Subject: [PATCH 3/6] - more selinux fixes --- ...-ata_id-on-non-removable-USB-devices.patch | 56 +++++ ...r-Aspire-One-ZG8-to-use-acer-aspire_.patch | 29 +++ ...vd-add-N-to-optstring-in-getopt_long.patch | 22 ++ ...not-build-extras-with-disable-extras.patch | 34 +++ ...nning-up-CD-on-pressing-eject-button.patch | 45 ++++ ...ell-Latitude-XT2-tablet-mode-navigat.patch | 56 +++++ ...ux-do-not-label-files-in-runtime-dir.patch | 204 ++++++++++++++++++ ...re-do-not-label-files-in-runtime-dir.patch | 25 +++ udev.spec | 26 ++- 9 files changed, 492 insertions(+), 5 deletions(-) create mode 100644 0002-Run-ata_id-on-non-removable-USB-devices.patch create mode 100644 0004-Add-rule-for-Acer-Aspire-One-ZG8-to-use-acer-aspire_.patch create mode 100644 0005-udevd-add-N-to-optstring-in-getopt_long.patch create mode 100644 0006-Revert-Do-not-build-extras-with-disable-extras.patch create mode 100644 0007-Avoid-spinning-up-CD-on-pressing-eject-button.patch create mode 100644 0008-keymap-Support-Dell-Latitude-XT2-tablet-mode-navigat.patch create mode 100644 0009-selinux-do-not-label-files-in-runtime-dir.patch create mode 100644 0010-selinux-firmware-do-not-label-files-in-runtime-dir.patch diff --git a/0002-Run-ata_id-on-non-removable-USB-devices.patch b/0002-Run-ata_id-on-non-removable-USB-devices.patch new file mode 100644 index 0000000..e58c4aa --- /dev/null +++ b/0002-Run-ata_id-on-non-removable-USB-devices.patch @@ -0,0 +1,56 @@ +From 42b9482ab2da64b4c2f254c227c0efaf83988a84 Mon Sep 17 00:00:00 2001 +From: David Zeuthen +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 +--- + 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" diff --git a/0004-Add-rule-for-Acer-Aspire-One-ZG8-to-use-acer-aspire_.patch b/0004-Add-rule-for-Acer-Aspire-One-ZG8-to-use-acer-aspire_.patch new file mode 100644 index 0000000..b343faf --- /dev/null +++ b/0004-Add-rule-for-Acer-Aspire-One-ZG8-to-use-acer-aspire_.patch @@ -0,0 +1,29 @@ +From ff4a035a8aaba6a7b5b85c4b348886d72c42e84c Mon Sep 17 00:00:00 2001 +From: Lee, Chun-Yi +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 +Signed-off-by: Martin Pitt +--- + 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" + diff --git a/0005-udevd-add-N-to-optstring-in-getopt_long.patch b/0005-udevd-add-N-to-optstring-in-getopt_long.patch new file mode 100644 index 0000000..c8ca5c6 --- /dev/null +++ b/0005-udevd-add-N-to-optstring-in-getopt_long.patch @@ -0,0 +1,22 @@ +From 6ee9b2cb8cf023253853f1c80e707598685b11f3 Mon Sep 17 00:00:00 2001 +From: Thomas Egerer +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; + diff --git a/0006-Revert-Do-not-build-extras-with-disable-extras.patch b/0006-Revert-Do-not-build-extras-with-disable-extras.patch new file mode 100644 index 0000000..a7f4f96 --- /dev/null +++ b/0006-Revert-Do-not-build-extras-with-disable-extras.patch @@ -0,0 +1,34 @@ +From 9bb54267a1483e8f3b2de352c7be433f625e5606 Mon Sep 17 00:00:00 2001 +From: Martin Pitt +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 + # ------------------------------------------------------------------------------ diff --git a/0007-Avoid-spinning-up-CD-on-pressing-eject-button.patch b/0007-Avoid-spinning-up-CD-on-pressing-eject-button.patch new file mode 100644 index 0000000..efeecfe --- /dev/null +++ b/0007-Avoid-spinning-up-CD-on-pressing-eject-button.patch @@ -0,0 +1,45 @@ +From 55eb500cc5465babf1fd773dbcceeb90eeefd997 Mon Sep 17 00:00:00 2001 +From: Martin Pitt +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" diff --git a/0008-keymap-Support-Dell-Latitude-XT2-tablet-mode-navigat.patch b/0008-keymap-Support-Dell-Latitude-XT2-tablet-mode-navigat.patch new file mode 100644 index 0000000..f8e7404 --- /dev/null +++ b/0008-keymap-Support-Dell-Latitude-XT2-tablet-mode-navigat.patch @@ -0,0 +1,56 @@ +From 5e0ec43fc40e3e6dd0e44a7d617846879e1dac9e Mon Sep 17 00:00:00 2001 +From: Seth Forshee +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 +Signed-off-by: Martin Pitt +--- + 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 diff --git a/0009-selinux-do-not-label-files-in-runtime-dir.patch b/0009-selinux-do-not-label-files-in-runtime-dir.patch new file mode 100644 index 0000000..56d16ac --- /dev/null +++ b/0009-selinux-do-not-label-files-in-runtime-dir.patch @@ -0,0 +1,204 @@ +From 51f43b53293c4cc64c2a55598491c6cbf27b6bd5 Mon Sep 17 00:00:00 2001 +From: Kay Sievers +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); diff --git a/0010-selinux-firmware-do-not-label-files-in-runtime-dir.patch b/0010-selinux-firmware-do-not-label-files-in-runtime-dir.patch new file mode 100644 index 0000000..a14e5d4 --- /dev/null +++ b/0010-selinux-firmware-do-not-label-files-in-runtime-dir.patch @@ -0,0 +1,25 @@ +From 960250952193db522b8ced336bf998bd7e8e4a31 Mon Sep 17 00:00:00 2001 +From: Kay Sievers +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"); diff --git a/udev.spec b/udev.spec index ad3e607..7f2b066 100644 --- a/udev.spec +++ b/udev.spec @@ -7,7 +7,7 @@ Summary: A rule-based device node and kernel event manager Name: udev Version: 167 -Release: 3%{?dist} +Release: 4%{?dist} License: GPLv2+ Group: System Environment/Base Provides: udev-persistent = %{version}-%{release} @@ -16,10 +16,16 @@ Source: ftp://ftp.kernel.org/pub/linux/utils/kernel/hotplug/%{name}-%{version}.t Source1: start_udev +Patch2: 0002-Run-ata_id-on-non-removable-USB-devices.patch Patch3: 0003-systemd-let-settle-depend-on-trigger-do-not-block-ba.patch -# Upstream 51f43b53293c4cc64c2a55598491c6cbf27b6bd5: don't SELinux label -# files outside of /dev. Fixes https://bugzilla.redhat.com/show_bug.cgi?id=693247 -Patch4: udev-167-selinux_label.patch +Patch4: 0004-Add-rule-for-Acer-Aspire-One-ZG8-to-use-acer-aspire_.patch +Patch5: 0005-udevd-add-N-to-optstring-in-getopt_long.patch +Patch6: 0006-Revert-Do-not-build-extras-with-disable-extras.patch +Patch7: 0007-Avoid-spinning-up-CD-on-pressing-eject-button.patch +Patch8: 0008-keymap-Support-Dell-Latitude-XT2-tablet-mode-navigat.patch +Patch9: 0009-selinux-do-not-label-files-in-runtime-dir.patch +Patch10: 0010-selinux-firmware-do-not-label-files-in-runtime-dir.patch + ExclusiveOS: Linux URL: http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html @@ -115,8 +121,15 @@ glib-based applications using libudev functionality. %prep %setup -q +%patch2 -p1 -b .git2 %patch3 -p1 -b .git3 -%patch4 -p1 -b .label +%patch4 -p1 -b .git4 +%patch5 -p1 -b .git5 +%patch6 -p1 -b .git6 +%patch7 -p1 -b .git7 +%patch8 -p1 -b .git8 +%patch9 -p1 -b .git9 +%patch10 -p1 -b .git10 %build # prevent man pages from re-building (xmlto) @@ -364,6 +377,9 @@ rm -rf $RPM_BUILD_ROOT %attr(0644,root,root) %{_libdir}/pkgconfig/gudev-1.0* %changelog +* Mon Apr 11 2011 Harald Hoyer 167-4 +- more selinux fixes + * Thu Apr 7 2011 Adam Williamson - 167-3 - selinux_label.patch: from upstream, don't label files outside of /dev From 95a4f669015bafeeb0bc3c68b789245998d22e42 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Fri, 1 Apr 2011 09:40:44 +0200 Subject: [PATCH 4/6] udev.spec: untabify --- udev.spec | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/udev.spec b/udev.spec index 7f2b066..6b402b4 100644 --- a/udev.spec +++ b/udev.spec @@ -196,7 +196,7 @@ mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d %preun if [ "$1" -eq 0 -a -f %{_initrddir}/udev ]; then if test -x /usr/bin/stat -a \ - "$(/usr/bin/stat -Lc '%%D-%%i' /)" = "$(/usr/bin/stat -Lc '%%D-%%i' /proc/1/root)"; then + "$(/usr/bin/stat -Lc '%%D-%%i' /)" = "$(/usr/bin/stat -Lc '%%D-%%i' /proc/1/root)"; then if [ -x /sbin/pidof ]; then pid=$(/sbin/pidof -c udevd) while [ -n "$pid" ]; do @@ -206,7 +206,7 @@ if [ "$1" -eq 0 -a -f %{_initrddir}/udev ]; then sleep 0.2 pid=$(/sbin/pidof -c udevd) hard="-9" - done + done fi fi /sbin/chkconfig --del udev @@ -226,8 +226,8 @@ getent group floppy >/dev/null || /usr/sbin/groupadd -g 19 floppy || : # kill daemon if we are not in a chroot if test -f /proc/1/exe -a -d /proc/1/root; then if test -x /usr/bin/stat -a \ - "$(/usr/bin/stat -Lc '%%D-%%i' /)" = "$(/usr/bin/stat -Lc '%%D-%%i' /proc/1/root)"; then - /bin/systemctl stop udev.service >/dev/null 2>&1 || : + "$(/usr/bin/stat -Lc '%%D-%%i' /)" = "$(/usr/bin/stat -Lc '%%D-%%i' /proc/1/root)"; then + /bin/systemctl stop udev.service >/dev/null 2>&1 || : if test -x /sbin/udevd -a -x /sbin/pidof ; then /sbin/udevadm control --stop-exec-queue pid=$(/sbin/pidof -c udevd) @@ -250,7 +250,7 @@ exit 0 # start daemon if we are not in a chroot if test -f /proc/1/exe -a -d /proc/1/root; then if test "$(/usr/bin/stat -Lc '%%D-%%i' /)" = "$(/usr/bin/stat -Lc '%%D-%%i' /proc/1/root)"; then - /bin/systemctl start udev.service >/dev/null 2>&1 || : + /bin/systemctl start udev.service >/dev/null 2>&1 || : /sbin/udevd -d >/dev/null 2>&1 || : /sbin/udevadm control --start-exec-queue || : fi From 9dc3a4b857355d2c8cb841586982189ed6ee6d81 Mon Sep 17 00:00:00 2001 From: Daniel Drake Date: Mon, 29 Aug 2011 09:10:39 +0100 Subject: [PATCH 5/6] Update OLPC XO keymap --- udev-olpc-keymap-update.patch | 65 +++++++++++++++++++++++++++++++++++ udev.spec | 8 ++++- 2 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 udev-olpc-keymap-update.patch diff --git a/udev-olpc-keymap-update.patch b/udev-olpc-keymap-update.patch new file mode 100644 index 0000000..f1bbecf --- /dev/null +++ b/udev-olpc-keymap-update.patch @@ -0,0 +1,65 @@ +From 00fc377e7a6b1997db346c8de51cbf05cad48376 Mon Sep 17 00:00:00 2001 +From: Paul Fox +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 + diff --git a/udev.spec b/udev.spec index 6b402b4..0aec890 100644 --- a/udev.spec +++ b/udev.spec @@ -7,7 +7,7 @@ Summary: A rule-based device node and kernel event manager Name: udev Version: 167 -Release: 4%{?dist} +Release: 5%{?dist} License: GPLv2+ Group: System Environment/Base Provides: udev-persistent = %{version}-%{release} @@ -26,6 +26,8 @@ Patch8: 0008-keymap-Support-Dell-Latitude-XT2-tablet-mode-navigat.patch Patch9: 0009-selinux-do-not-label-files-in-runtime-dir.patch Patch10: 0010-selinux-firmware-do-not-label-files-in-runtime-dir.patch +Patch1004: udev-olpc-keymap-update.patch + ExclusiveOS: Linux URL: http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html @@ -130,6 +132,7 @@ glib-based applications using libudev functionality. %patch8 -p1 -b .git8 %patch9 -p1 -b .git9 %patch10 -p1 -b .git10 +%patch1004 -p1 %build # prevent man pages from re-building (xmlto) @@ -377,6 +380,9 @@ rm -rf $RPM_BUILD_ROOT %attr(0644,root,root) %{_libdir}/pkgconfig/gudev-1.0* %changelog +* Mon Aug 29 2011 Daniel Drake 167-5 +- Update OLPC XO keymap + * Mon Apr 11 2011 Harald Hoyer 167-4 - more selinux fixes From 6ff6618fa868efb5b58997f2deda9348e9a41739 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Mon, 29 Aug 2011 17:03:58 +0200 Subject: [PATCH 6/6] removed old deprecated ghost dirs --- udev.spec | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/udev.spec b/udev.spec index 0aec890..6783c37 100644 --- a/udev.spec +++ b/udev.spec @@ -7,7 +7,7 @@ Summary: A rule-based device node and kernel event manager Name: udev Version: 167 -Release: 5%{?dist} +Release: 6%{?dist} License: GPLv2+ Group: System Environment/Base Provides: udev-persistent = %{version}-%{release} @@ -164,9 +164,6 @@ make install DESTDIR=$RPM_BUILD_ROOT rm -fr $RPM_BUILD_ROOT%{_docdir}/udev rm -f $RPM_BUILD_ROOT/%{_libdir}/*.la -# Deprecated, but keep the ownership -mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/udev/{rules.d,scripts,devices} -mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/dev.d mkdir -p $RPM_BUILD_ROOT%{_bindir} touch $RPM_BUILD_ROOT%{_sysconfdir}/scsi_id.config @@ -341,13 +338,6 @@ rm -rf $RPM_BUILD_ROOT %{systemdsystemunitdir}/basic.target.wants/udev-trigger.service %{systemdsystemunitdir}/sockets.target.wants/udev.socket -# Deprecated, but keep the ownership -%ghost %dir /var/lib/udev -%ghost %dir %{_sysconfdir}/udev/scripts/ -%ghost %dir %{_sysconfdir}/udev/devices/ -%ghost %dir %{_sysconfdir}/dev.d/ -%ghost %dir %{_sysconfdir}/udev/makedev.d/ - %files -n libudev %defattr(0644, root, root, 0755) %doc libudev/COPYING @@ -380,6 +370,9 @@ rm -rf $RPM_BUILD_ROOT %attr(0644,root,root) %{_libdir}/pkgconfig/gudev-1.0* %changelog +* Mon Aug 29 2011 Harald Hoyer 167-6 +- removed old deprecated ghost dirs + * Mon Aug 29 2011 Daniel Drake 167-5 - Update OLPC XO keymap