diff --git a/0001-Add-bootsplash-handling-for-password-dialogs.patch b/0001-Add-bootsplash-handling-for-password-dialogs.patch index 7338d212..957757ae 100644 --- a/0001-Add-bootsplash-handling-for-password-dialogs.patch +++ b/0001-Add-bootsplash-handling-for-password-dialogs.patch @@ -6,11 +6,11 @@ Subject: [PATCH] Add bootsplash handling for password dialogs openSUSE uses bootsplash.org, so add a crude handling for setting the splash screen to verbose when a password is asked... --- -diff --git a/src/ask-password-api.c b/src/ask-password-api.c -index da967ab..b89bcea 100644 ---- a/src/shared/ask-password-api.c -+++ b/src/shared/ask-password-api.c -@@ -62,6 +62,9 @@ int ask_password_tty( +Index: systemd-195/src/shared/ask-password-api.c +=================================================================== +--- systemd-195.orig/src/shared/ask-password-api.c ++++ systemd-195/src/shared/ask-password-api.c +@@ -63,6 +63,9 @@ int ask_password_tty( bool reset_tty = false; bool silent_mode = false; bool dirty = false; @@ -20,7 +20,7 @@ index da967ab..b89bcea 100644 enum { POLL_TTY, POLL_INOTIFY -@@ -105,6 +108,19 @@ int ask_password_tty( +@@ -106,6 +109,19 @@ int ask_password_tty( } reset_tty = true; @@ -40,7 +40,7 @@ index da967ab..b89bcea 100644 } zero(pollfd); -@@ -239,6 +255,12 @@ finish: +@@ -240,6 +256,12 @@ finish: close_nointr_nofail(ttyfd); } diff --git a/0001-handle-disable_caplock-and-compose_table-and-kbd_rat.patch b/0001-handle-disable_caplock-and-compose_table-and-kbd_rat.patch index 8376c34c..d04cb888 100644 --- a/0001-handle-disable_caplock-and-compose_table-and-kbd_rat.patch +++ b/0001-handle-disable_caplock-and-compose_table-and-kbd_rat.patch @@ -7,10 +7,10 @@ Subject: [PATCH] handle disable_caplock and compose_table and kbd_rate src/vconsole-setup.c | 124 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 121 insertions(+), 3 deletions(-) -Index: systemd-189/src/vconsole/vconsole-setup.c +Index: systemd-195/src/vconsole/vconsole-setup.c =================================================================== ---- systemd-189.orig/src/vconsole/vconsole-setup.c -+++ systemd-189/src/vconsole/vconsole-setup.c +--- systemd-195.orig/src/vconsole/vconsole-setup.c ++++ systemd-195/src/vconsole/vconsole-setup.c @@ -40,6 +40,7 @@ #include "log.h" #include "macro.h" @@ -158,7 +158,7 @@ Index: systemd-189/src/vconsole/vconsole-setup.c int r = EXIT_FAILURE; pid_t font_pid = 0, keymap_pid = 0; -@@ -281,10 +387,15 @@ int main(int argc, char **argv) { +@@ -273,10 +379,15 @@ int main(int argc, char **argv) { free(vc_keymap); vc_keymap = t; } @@ -174,7 +174,7 @@ Index: systemd-189/src/vconsole/vconsole-setup.c NULL); if (r < 0 && r != -ENOENT) log_warning("Failed to read /etc/sysconfig/keyboard: %s", strerror(-r)); -@@ -443,7 +554,11 @@ int main(int argc, char **argv) { +@@ -435,7 +546,11 @@ int main(int argc, char **argv) { disable_utf8(fd); @@ -187,7 +187,7 @@ Index: systemd-189/src/vconsole/vconsole-setup.c load_font(vc, vc_font, vc_font_map, vc_font_unimap, &font_pid) >= 0) r = EXIT_SUCCESS; -@@ -451,6 +566,14 @@ finish: +@@ -443,6 +558,14 @@ finish: if (keymap_pid > 0) wait_for_terminate_and_warn(KBD_LOADKEYS, keymap_pid); @@ -202,7 +202,7 @@ Index: systemd-189/src/vconsole/vconsole-setup.c if (font_pid > 0) wait_for_terminate_and_warn(KBD_SETFONT, font_pid); -@@ -458,6 +581,12 @@ finish: +@@ -450,6 +573,12 @@ finish: free(vc_font); free(vc_font_map); free(vc_font_unimap); diff --git a/0001-service-flags-sysv-service-with-detected-pid-as-Rema.patch b/0001-service-flags-sysv-service-with-detected-pid-as-Rema.patch index eebd73f5..0f665022 100644 --- a/0001-service-flags-sysv-service-with-detected-pid-as-Rema.patch +++ b/0001-service-flags-sysv-service-with-detected-pid-as-Rema.patch @@ -12,11 +12,11 @@ Fixes https://bugzilla.novell.com/show_bug.cgi?id=721426 src/service.c | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-) -Index: systemd-37/src/service.c +Index: systemd-195/src/core/service.c =================================================================== ---- systemd-37.orig/src/core/service.c -+++ systemd-37/src/core/service.c -@@ -2014,8 +2014,13 @@ static void service_enter_running(Servic +--- systemd-195.orig/src/core/service.c ++++ systemd-195/src/core/service.c +@@ -2136,8 +2136,13 @@ static void service_enter_running(Servic cgroup_ok = cgroup_good(s); if ((main_pid_ok > 0 || (main_pid_ok < 0 && cgroup_ok != 0)) && diff --git a/1001-Reinstate-TIMEOUT-handling.patch b/1001-Reinstate-TIMEOUT-handling.patch index 9e451f4b..f90c265a 100644 --- a/1001-Reinstate-TIMEOUT-handling.patch +++ b/1001-Reinstate-TIMEOUT-handling.patch @@ -20,10 +20,10 @@ regarding this issue. src/udevd.c | 13 ++++++++++--- 4 files changed, 32 insertions(+), 3 deletions(-) -Index: systemd-190/src/libudev/libudev-device.c +Index: systemd-195/src/libudev/libudev-device.c =================================================================== ---- systemd-190.orig/src/libudev/libudev-device.c -+++ systemd-190/src/libudev/libudev-device.c +--- systemd-195.orig/src/libudev/libudev-device.c ++++ systemd-195/src/libudev/libudev-device.c @@ -68,6 +68,7 @@ struct udev_device { struct udev_list tags_list; unsigned long long int seqnum; @@ -71,10 +71,10 @@ Index: systemd-190/src/libudev/libudev-device.c udev_device->watch_handle = -1; /* copy global properties */ udev_list_entry_foreach(list_entry, udev_get_properties_list_entry(udev)) -Index: systemd-190/src/libudev/libudev-private.h +Index: systemd-195/src/libudev/libudev-private.h =================================================================== ---- systemd-190.orig/src/libudev/libudev-private.h -+++ systemd-190/src/libudev/libudev-private.h +--- systemd-195.orig/src/libudev/libudev-private.h ++++ systemd-195/src/libudev/libudev-private.h @@ -65,6 +65,7 @@ const char *udev_device_get_id_filename( void udev_device_set_is_initialized(struct udev_device *udev_device); int udev_device_add_tag(struct udev_device *udev_device, const char *tag); @@ -83,11 +83,11 @@ Index: systemd-190/src/libudev/libudev-private.h unsigned long long udev_device_get_usec_initialized(struct udev_device *udev_device); void udev_device_set_usec_initialized(struct udev_device *udev_device, unsigned long long usec_initialized); int udev_device_get_devlink_priority(struct udev_device *udev_device); -Index: systemd-190/src/udev/udevd.c +Index: systemd-195/src/udev/udevd.c =================================================================== ---- systemd-190.orig/src/udev/udevd.c -+++ systemd-190/src/udev/udevd.c -@@ -387,7 +387,7 @@ out: +--- systemd-195.orig/src/udev/udevd.c ++++ systemd-195/src/udev/udevd.c +@@ -388,7 +388,7 @@ out: } } @@ -96,7 +96,7 @@ Index: systemd-190/src/udev/udevd.c { struct udev_list_node *loop; -@@ -413,7 +413,7 @@ static void event_run(struct event *even +@@ -414,7 +414,7 @@ static void event_run(struct event *even return; } @@ -105,7 +105,7 @@ Index: systemd-190/src/udev/udevd.c if (children_max > 1) log_debug("maximum number (%i) of children reached\n", children); return; -@@ -447,6 +447,13 @@ static int event_queue_insert(struct ude +@@ -450,6 +450,13 @@ static int event_queue_insert(struct ude event->state = EVENT_QUEUED; udev_list_node_append(&event->node, &event_list); @@ -119,7 +119,7 @@ Index: systemd-190/src/udev/udevd.c return 0; } -@@ -552,7 +559,7 @@ static void event_queue_start(struct ude +@@ -559,7 +566,7 @@ static void event_queue_start(struct ude if (is_devpath_busy(event)) continue; diff --git a/1002-re-enable-by_path-links-for-ata-devices.patch b/1002-re-enable-by_path-links-for-ata-devices.patch index 41242f3b..9250624f 100644 --- a/1002-re-enable-by_path-links-for-ata-devices.patch +++ b/1002-re-enable-by_path-links-for-ata-devices.patch @@ -1,8 +1,8 @@ -Index: udev-182/src/udev-builtin-path_id.c +Index: systemd-195/src/udev/udev-builtin-path_id.c =================================================================== ---- udev-182.orig/src/udev/udev-builtin-path_id.c -+++ udev-182/src/udev/udev-builtin-path_id.c -@@ -286,6 +286,85 @@ out: +--- systemd-195.orig/src/udev/udev-builtin-path_id.c ++++ systemd-195/src/udev/udev-builtin-path_id.c +@@ -302,6 +302,85 @@ out: return hostdev; } @@ -88,7 +88,7 @@ Index: udev-182/src/udev-builtin-path_id.c static struct udev_device *handle_scsi(struct udev_device *parent, char **path) { const char *devtype; -@@ -322,16 +401,8 @@ static struct udev_device *handle_scsi(s +@@ -338,16 +417,8 @@ static struct udev_device *handle_scsi(s goto out; } diff --git a/1003-rules-create-by-id-scsi-links-for-ATA-devices.patch b/1003-rules-create-by-id-scsi-links-for-ATA-devices.patch index 240d8200..c7b3b1cd 100644 --- a/1003-rules-create-by-id-scsi-links-for-ATA-devices.patch +++ b/1003-rules-create-by-id-scsi-links-for-ATA-devices.patch @@ -1,7 +1,7 @@ -Index: udev-182/rules/60-persistent-storage.rules +Index: systemd-195/rules/60-persistent-storage.rules =================================================================== ---- udev-182.orig/rules/60-persistent-storage.rules -+++ udev-182/rules/60-persistent-storage.rules +--- systemd-195.orig/rules/60-persistent-storage.rules ++++ systemd-195/rules/60-persistent-storage.rules @@ -44,6 +44,10 @@ KERNEL=="cciss*", ENV{DEVTYPE}=="disk", KERNEL=="sd*|sr*|cciss*", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}" KERNEL=="sd*|cciss*", ENV{DEVTYPE}=="partition", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}-part%n" diff --git a/1004-udev-netlink-null-rules.patch b/1004-udev-netlink-null-rules.patch index c0b7d44a..e5fd1b7e 100644 --- a/1004-udev-netlink-null-rules.patch +++ b/1004-udev-netlink-null-rules.patch @@ -1,8 +1,8 @@ -Index: udev-182/src/udevd.c +Index: systemd-195/src/udev/udevd.c =================================================================== ---- udev-182.orig/src/udev/udevd.c -+++ udev-182/src/udev/udevd.c -@@ -1683,6 +1683,8 @@ int main(int argc, char *argv[]) +--- systemd-195.orig/src/udev/udevd.c ++++ systemd-195/src/udev/udevd.c +@@ -1513,6 +1513,8 @@ int main(int argc, char *argv[]) dev = udev_monitor_receive_device(monitor); if (dev != NULL) { udev_device_set_usec_initialized(dev, now_usec()); diff --git a/1007-udevd-add-missing-to-getopt_long-e.patch b/1007-udevd-add-missing-to-getopt_long-e.patch index 209f5d86..59cba6ae 100644 --- a/1007-udevd-add-missing-to-getopt_long-e.patch +++ b/1007-udevd-add-missing-to-getopt_long-e.patch @@ -9,11 +9,11 @@ and this leads to segfault when calling 'systemd-udevd -e'. src/udev/udevd.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) -diff --git a/src/udev/udevd.c b/src/udev/udevd.c -index ebd601e..ffc48a0 100644 ---- a/src/udev/udevd.c -+++ b/src/udev/udevd.c -@@ -1097,7 +1097,7 @@ int main(int argc, char *argv[]) +Index: systemd-195/src/udev/udevd.c +=================================================================== +--- systemd-195.orig/src/udev/udevd.c ++++ systemd-195/src/udev/udevd.c +@@ -1104,7 +1104,7 @@ int main(int argc, char *argv[]) for (;;) { int option; @@ -22,6 +22,3 @@ index ebd601e..ffc48a0 100644 if (option == -1) break; --- -1.7.7 - diff --git a/1008-udev-path_id-handle-Hyper-V-devices.patch b/1008-udev-path_id-handle-Hyper-V-devices.patch new file mode 100644 index 00000000..b4273dd7 --- /dev/null +++ b/1008-udev-path_id-handle-Hyper-V-devices.patch @@ -0,0 +1,72 @@ +From a24d03b8ee2ca62cd1273e27cf4e79ddcc0fbb1c Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Fri, 23 Nov 2012 14:12:39 +0100 +Subject: [PATCH] udev: path_id - handle Hyper-V devices + +Hyper-V has an abstract bus, which gets renumbered on guest +startup. So instead of the bus numbers we should be using +the device GUIDs, which can be retrieved from the 'device_id' +sysfs attribute. +--- + src/udev/udev-builtin-path_id.c | 41 +++++++++++++++++++++++++++++++++++++++ + 1 files changed, 41 insertions(+), 0 deletions(-) + +Index: systemd-195/src/udev/udev-builtin-path_id.c +=================================================================== +--- systemd-195.orig/src/udev/udev-builtin-path_id.c ++++ systemd-195/src/udev/udev-builtin-path_id.c +@@ -381,6 +381,42 @@ out: + return hostdev; + } + ++static struct udev_device *handle_scsi_hyperv(struct udev_device *parent, char **path) { ++ struct udev_device *hostdev; ++ struct udev_device *vmbusdev; ++ const char *guid_str; ++ char *lun = NULL; ++ char guid[38]; ++ size_t i, k; ++ ++ hostdev = udev_device_get_parent_with_subsystem_devtype(parent, "scsi", "scsi_host"); ++ if (!hostdev) ++ return NULL; ++ ++ vmbusdev = udev_device_get_parent(hostdev); ++ if (!vmbusdev) ++ return NULL; ++ ++ guid_str = udev_device_get_sysattr_value(vmbusdev, "device_id"); ++ if (!guid_str) ++ return NULL; ++ ++ if (strlen(guid_str) < 37 || guid_str[0] != '{' || guid_str[36] != '}') ++ return NULL; ++ ++ for (i = 1, k = 0; i < 36; i++) { ++ if (guid_str[i] == '-') ++ continue; ++ guid[k++] = guid_str[i]; ++ } ++ guid[k] = '\0'; ++ ++ format_lun_number(parent, &lun); ++ path_prepend(path, "vmbus-%s-%s", guid, lun); ++ free(lun); ++ return parent; ++} ++ + static struct udev_device *handle_scsi(struct udev_device *parent, char **path) + { + const char *devtype; +@@ -422,6 +458,11 @@ static struct udev_device *handle_scsi(s + goto out; + } + ++ if (strstr(name, "/vmbus_") != NULL) { ++ parent = handle_scsi_hyperv(parent, path); ++ goto out; ++ } ++ + parent = handle_scsi_default(parent, path); + out: + return parent; diff --git a/1009-keymap-Update-the-list-of-Samsung-Series-9-models.patch b/1009-keymap-Update-the-list-of-Samsung-Series-9-models.patch new file mode 100644 index 00000000..58bf335c --- /dev/null +++ b/1009-keymap-Update-the-list-of-Samsung-Series-9-models.patch @@ -0,0 +1,136 @@ +From 68c77c2f6168dca0ce7b5edb81612cd6be39e63d Mon Sep 17 00:00:00 2001 +From: Alessandro Crismani +Date: Wed, 8 Aug 2012 14:19:32 +0200 +Subject: [PATCH] keymap: Update the list of Samsung Series 9 models + +Currently, keymaps are provided only for the NP90X3A laptop. Samsung +introduced updated models, codenamed 900X3B, 900X3C, 900X4B, 900X4C, +which are currently not matched by udev rules. This patch includes the +newer modules in udev rules and move the samsung-n90x3a file defining +keys to a more generic samsung-series-9 file. + +The patch was tested on a 900X4C laptop, and other people reported +that the rules also work for 900X3B and 900X3C ones. +--- + delete mode 100644 keymaps-force-release/samsung-90x3a + create mode 100644 keymaps-force-release/samsung-series-9 + delete mode 100644 keymaps/samsung-90x3a + create mode 100644 keymaps/samsung-series-9 + +From 68c77c2f6168dca0ce7b5edb81612cd6be39e63d Mon Sep 17 00:00:00 2001 +From: Alessandro Crismani +Date: Wed, 8 Aug 2012 14:19:32 +0200 +Subject: [PATCH] keymap: Update the list of Samsung Series 9 models + +Currently, keymaps are provided only for the NP90X3A laptop. Samsung +introduced updated models, codenamed 900X3B, 900X3C, 900X4B, 900X4C, +which are currently not matched by udev rules. This patch includes the +newer modules in udev rules and move the samsung-n90x3a file defining +keys to a more generic samsung-series-9 file. + +The patch was tested on a 900X4C laptop, and other people reported +that the rules also work for 900X3B and 900X3C ones. +--- + Makefile.am | 4 ++-- + keymaps-force-release/samsung-90x3a | 6 ------ + keymaps-force-release/samsung-series-9 | 6 ++++++ + keymaps/samsung-90x3a | 5 ----- + keymaps/samsung-series-9 | 5 +++++ + src/udev/keymap/95-keyboard-force-release.rules | 2 +- + src/udev/keymap/95-keymap.rules | 2 +- + 7 files changed, 15 insertions(+), 15 deletions(-) + delete mode 100644 keymaps-force-release/samsung-90x3a + create mode 100644 keymaps-force-release/samsung-series-9 + delete mode 100644 keymaps/samsung-90x3a + create mode 100644 keymaps/samsung-series-9 + +Index: systemd-195/Makefile.am +=================================================================== +--- systemd-195.orig/Makefile.am ++++ systemd-195/Makefile.am +@@ -2272,7 +2272,7 @@ dist_udevkeymap_DATA = \ + keymaps/onkyo \ + keymaps/oqo-model2 \ + keymaps/samsung-other \ +- keymaps/samsung-90x3a \ ++ keymaps/samsung-series-9 \ + keymaps/samsung-sq1us \ + keymaps/samsung-sx20s \ + keymaps/toshiba-satellite_a100 \ +@@ -2286,7 +2286,7 @@ dist_udevkeymapforcerel_DATA = \ + keymaps-force-release/dell-xps \ + keymaps-force-release/hp-other \ + keymaps-force-release/samsung-other \ +- keymaps-force-release/samsung-90x3a \ ++ keymaps-force-release/samsung-series-9 \ + keymaps-force-release/common-volume-keys + + src/udev/keymap/keys.txt: Makefile +Index: systemd-195/keymaps-force-release/samsung-90x3a +=================================================================== +--- systemd-195.orig/keymaps-force-release/samsung-90x3a ++++ /dev/null +@@ -1,6 +0,0 @@ +-# list of scancodes (hex or decimal), optional comment +-0xCE # Fn+F8 keyboard backlit up +-0x8D # Fn+F7 keyboard backlit down +-0x97 # Fn+F12 wifi on/off +-0x96 # Fn+F1 performance mode (?) +-0xD5 # Fn+F6 battery life extender +Index: systemd-195/keymaps-force-release/samsung-series-9 +=================================================================== +--- /dev/null ++++ systemd-195/keymaps-force-release/samsung-series-9 +@@ -0,0 +1,6 @@ ++# list of scancodes (hex or decimal), optional comment ++0xCE # Fn+F8 keyboard backlit up ++0x8D # Fn+F7 keyboard backlit down ++0x97 # Fn+F12 wifi on/off ++0x96 # Fn+F1 performance mode (?) ++0xD5 # Fn+F6 battery life extender +Index: systemd-195/keymaps/samsung-90x3a +=================================================================== +--- systemd-195.orig/keymaps/samsung-90x3a ++++ /dev/null +@@ -1,5 +0,0 @@ +-0x96 kbdillumup # Fn+F8 keyboard backlit up +-0x97 kbdillumdown # Fn+F7 keyboard backlit down +-0xD5 wlan # Fn+F12 wifi on/off +-0xCE prog1 # Fn+F1 performance mode +-0x8D prog2 # Fn+F6 battery life extender +Index: systemd-195/keymaps/samsung-series-9 +=================================================================== +--- /dev/null ++++ systemd-195/keymaps/samsung-series-9 +@@ -0,0 +1,5 @@ ++0x96 kbdillumup # Fn+F8 keyboard backlit up ++0x97 kbdillumdown # Fn+F7 keyboard backlit down ++0xD5 wlan # Fn+F12 wifi on/off ++0xCE prog1 # Fn+F1 performance mode ++0x8D prog2 # Fn+F6 battery life extender +Index: systemd-195/src/udev/keymap/95-keyboard-force-release.rules +=================================================================== +--- systemd-195.orig/src/udev/keymap/95-keyboard-force-release.rules ++++ systemd-195/src/udev/keymap/95-keyboard-force-release.rules +@@ -19,7 +19,7 @@ DRIVER!="atkbd", GOTO="force_release_end + ENV{DMI_VENDOR}="$attr{[dmi/id]sys_vendor}" + + ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", RUN+="keyboard-force-release.sh $devpath samsung-other" +-ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*90X3A*", RUN+="keyboard-force-release.sh $devpath samsung-90x3a" ++ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*90X3A*|*900X3*|*900X4*", RUN+="keyboard-force-release.sh $devpath samsung-series-9" + + ENV{DMI_VENDOR}=="Dell Inc.", ATTR{[dmi/id]product_name}=="Studio 1557|Studio 1558", RUN+="keyboard-force-release.sh $devpath common-volume-keys" + ENV{DMI_VENDOR}=="Dell Inc.", ATTR{[dmi/id]product_name}=="Latitude E*|Latitude *U|Precision M*", RUN+="keyboard-force-release.sh $devpath dell-touchpad" +Index: systemd-195/src/udev/keymap/95-keymap.rules +=================================================================== +--- systemd-195.orig/src/udev/keymap/95-keymap.rules ++++ systemd-195/src/udev/keymap/95-keymap.rules +@@ -147,7 +147,7 @@ ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][n + ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*SX20S*", RUN+="keymap $name samsung-sx20s" + ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="SQ1US", RUN+="keymap $name samsung-sq1us" + ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*700Z*", RUN+="keymap $name 0xBA ejectcd 0x96 keyboardbrightnessup 0x97 keyboardbrightnessdown" +-ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*90X3A*", RUN+="keymap $name samsung-90x3a" ++ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*90X3A*|*900X3*|*900X4*", RUN+="keymap $name samsung-series-9" + + ENV{DMI_VENDOR}=="TOSHIBA", ATTR{[dmi/id]product_name}=="SATELLITE A100", RUN+="keymap $name toshiba-satellite_a100" + ENV{DMI_VENDOR}=="TOSHIBA", ATTR{[dmi/id]product_name}=="Satellite A110", RUN+="keymap $name toshiba-satellite_a110" diff --git a/1010-keymap-Add-Samsung-700T.patch b/1010-keymap-Add-Samsung-700T.patch new file mode 100644 index 00000000..860da9ad --- /dev/null +++ b/1010-keymap-Add-Samsung-700T.patch @@ -0,0 +1,22 @@ +From a5dea3d43b3866b48c66d6bef9663cf8372fd96c Mon Sep 17 00:00:00 2001 +From: Martin Pitt +Date: Wed, 28 Nov 2012 21:33:26 +0100 +Subject: [PATCH] keymap: Add Samsung 700T + +https://bugzilla.redhat.com/show_bug.cgi?id=879691 +--- + src/udev/keymap/95-keymap.rules | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +Index: systemd-195/src/udev/keymap/95-keymap.rules +=================================================================== +--- systemd-195.orig/src/udev/keymap/95-keymap.rules ++++ systemd-195/src/udev/keymap/95-keymap.rules +@@ -147,6 +147,7 @@ ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][n + ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*SX20S*", RUN+="keymap $name samsung-sx20s" + ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="SQ1US", RUN+="keymap $name samsung-sq1us" + ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*700Z*", RUN+="keymap $name 0xBA ejectcd 0x96 keyboardbrightnessup 0x97 keyboardbrightnessdown" ++ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*700T*", RUN+="keymap $name 0xAD leftmeta" + ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*90X3A*|*900X3*|*900X4*", RUN+="keymap $name samsung-series-9" + + ENV{DMI_VENDOR}=="TOSHIBA", ATTR{[dmi/id]product_name}=="SATELLITE A100", RUN+="keymap $name toshiba-satellite_a100" diff --git a/1011-libudev-avoid-leak-during-realloc-failure.patch b/1011-libudev-avoid-leak-during-realloc-failure.patch new file mode 100644 index 00000000..6b5d1907 --- /dev/null +++ b/1011-libudev-avoid-leak-during-realloc-failure.patch @@ -0,0 +1,36 @@ +From cf2292f5ac87087f57dbd632a25a332c9d194ebf Mon Sep 17 00:00:00 2001 +From: Mauro Dreissig +Date: Sun, 11 Nov 2012 22:07:51 -0200 +Subject: [PATCH] libudev: avoid leak during realloc failure + +--- + src/libudev/libudev-list.c | 6 ++++-- + 1 files changed, 4 insertions(+), 2 deletions(-) + +Index: systemd-195/src/libudev/libudev-list.c +=================================================================== +--- systemd-195.orig/src/libudev/libudev-list.c ++++ systemd-195/src/libudev/libudev-list.c +@@ -177,18 +177,20 @@ struct udev_list_entry *udev_list_entry_ + if (list->unique) { + /* allocate or enlarge sorted array if needed */ + if (list->entries_cur >= list->entries_max) { ++ struct udev_list_entry **entries; + unsigned int add; + + add = list->entries_max; + if (add < 1) + add = 64; +- list->entries = realloc(list->entries, (list->entries_max + add) * sizeof(struct udev_list_entry *)); +- if (list->entries == NULL) { ++ entries = realloc(list->entries, (list->entries_max + add) * sizeof(struct udev_list_entry *)); ++ if (entries == NULL) { + free(entry->name); + free(entry->value); + free(entry); + return NULL; + } ++ list->entries = entries; + list->entries_max += add; + } + diff --git a/1012-libudev-do-not-resolve-attr-device-symlinks.patch b/1012-libudev-do-not-resolve-attr-device-symlinks.patch new file mode 100644 index 00000000..9e48bc52 --- /dev/null +++ b/1012-libudev-do-not-resolve-attr-device-symlinks.patch @@ -0,0 +1,40 @@ +From 5ae18ddc0d86673520c0dd6b59ccac8afc8aa605 Mon Sep 17 00:00:00 2001 +From: Kay Sievers +Date: Tue, 20 Nov 2012 18:07:57 +0100 +Subject: [PATCH] libudev: do not resolve $attr{device} symlinks + +--- + src/libudev/libudev-device.c | 19 ++++++++++--------- + 1 files changed, 10 insertions(+), 9 deletions(-) + +Index: systemd-195/src/libudev/libudev-device.c +=================================================================== +--- systemd-195.orig/src/libudev/libudev-device.c ++++ systemd-195/src/libudev/libudev-device.c +@@ -1369,16 +1369,17 @@ _public_ const char *udev_device_get_sys + goto out; + } + +- /* resolve link to a device and return its syspath */ +- util_strscpyl(path, sizeof(path), udev_device->syspath, "/", sysattr, NULL); +- dev = udev_device_new_from_syspath(udev_device->udev, path); +- if (dev != NULL) { +- list_entry = udev_list_entry_add(&udev_device->sysattr_value_list, sysattr, +- udev_device_get_syspath(dev)); +- val = udev_list_entry_get_value(list_entry); +- udev_device_unref(dev); ++ /* resolve custom link to a device and return its syspath */ ++ if (!streq(sysattr, "device")) { ++ util_strscpyl(path, sizeof(path), udev_device->syspath, "/", sysattr, NULL); ++ dev = udev_device_new_from_syspath(udev_device->udev, path); ++ if (dev != NULL) { ++ list_entry = udev_list_entry_add(&udev_device->sysattr_value_list, sysattr, ++ udev_device_get_syspath(dev)); ++ val = udev_list_entry_get_value(list_entry); ++ udev_device_unref(dev); ++ } + } +- + goto out; + } + diff --git a/1013-libudev-validate-udev-argument-to-udev_enumerate_new.patch b/1013-libudev-validate-udev-argument-to-udev_enumerate_new.patch new file mode 100644 index 00000000..a93c2272 --- /dev/null +++ b/1013-libudev-validate-udev-argument-to-udev_enumerate_new.patch @@ -0,0 +1,23 @@ +From e68893075083a7461b1572233d23fdb23541d630 Mon Sep 17 00:00:00 2001 +From: Michael Terry +Date: Fri, 14 Dec 2012 09:02:13 -0500 +Subject: [PATCH] libudev: validate 'udev' argument to udev_enumerate_new() + +https://bugs.freedesktop.org/show_bug.cgi?id=58289 +--- + src/libudev/libudev-enumerate.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +Index: systemd-195/src/libudev/libudev-enumerate.c +=================================================================== +--- systemd-195.orig/src/libudev/libudev-enumerate.c ++++ systemd-195/src/libudev/libudev-enumerate.c +@@ -73,6 +73,8 @@ _public_ struct udev_enumerate *udev_enu + { + struct udev_enumerate *udev_enumerate; + ++ if (udev == NULL) ++ return NULL; + udev_enumerate = calloc(1, sizeof(struct udev_enumerate)); + if (udev_enumerate == NULL) + return NULL; diff --git a/1014-udev-fix-whitespace.patch b/1014-udev-fix-whitespace.patch new file mode 100644 index 00000000..fcccc037 --- /dev/null +++ b/1014-udev-fix-whitespace.patch @@ -0,0 +1,56 @@ +From 3fd0c4c66df45ee457cfb5e4ca8e285914ebc32f Mon Sep 17 00:00:00 2001 +From: Kay Sievers +Date: Tue, 20 Nov 2012 18:07:14 +0100 +Subject: [PATCH] udev: fix whitespace + +--- + src/udev/udev-event.c | 36 ++++++++++++++++++------------------ + 1 files changed, 18 insertions(+), 18 deletions(-) + +Index: systemd-195/src/udev/udev-event.c +=================================================================== +--- systemd-195.orig/src/udev/udev-event.c ++++ systemd-195/src/udev/udev-event.c +@@ -90,24 +90,24 @@ size_t udev_event_apply_format(struct ud + const char fmt; + enum subst_type type; + } map[] = { +- { .name = "devnode", .fmt = 'N', .type = SUBST_DEVNODE }, +- { .name = "tempnode", .fmt = 'N', .type = SUBST_DEVNODE }, +- { .name = "attr", .fmt = 's', .type = SUBST_ATTR }, +- { .name = "sysfs", .fmt = 's', .type = SUBST_ATTR }, +- { .name = "env", .fmt = 'E', .type = SUBST_ENV }, +- { .name = "kernel", .fmt = 'k', .type = SUBST_KERNEL }, +- { .name = "number", .fmt = 'n', .type = SUBST_KERNEL_NUMBER }, +- { .name = "driver", .fmt = 'd', .type = SUBST_DRIVER }, +- { .name = "devpath", .fmt = 'p', .type = SUBST_DEVPATH }, +- { .name = "id", .fmt = 'b', .type = SUBST_ID }, +- { .name = "major", .fmt = 'M', .type = SUBST_MAJOR }, +- { .name = "minor", .fmt = 'm', .type = SUBST_MINOR }, +- { .name = "result", .fmt = 'c', .type = SUBST_RESULT }, +- { .name = "parent", .fmt = 'P', .type = SUBST_PARENT }, +- { .name = "name", .fmt = 'D', .type = SUBST_NAME }, +- { .name = "links", .fmt = 'L', .type = SUBST_LINKS }, +- { .name = "root", .fmt = 'r', .type = SUBST_ROOT }, +- { .name = "sys", .fmt = 'S', .type = SUBST_SYS }, ++ { .name = "devnode", .fmt = 'N', .type = SUBST_DEVNODE }, ++ { .name = "tempnode", .fmt = 'N', .type = SUBST_DEVNODE }, ++ { .name = "attr", .fmt = 's', .type = SUBST_ATTR }, ++ { .name = "sysfs", .fmt = 's', .type = SUBST_ATTR }, ++ { .name = "env", .fmt = 'E', .type = SUBST_ENV }, ++ { .name = "kernel", .fmt = 'k', .type = SUBST_KERNEL }, ++ { .name = "number", .fmt = 'n', .type = SUBST_KERNEL_NUMBER }, ++ { .name = "driver", .fmt = 'd', .type = SUBST_DRIVER }, ++ { .name = "devpath", .fmt = 'p', .type = SUBST_DEVPATH }, ++ { .name = "id", .fmt = 'b', .type = SUBST_ID }, ++ { .name = "major", .fmt = 'M', .type = SUBST_MAJOR }, ++ { .name = "minor", .fmt = 'm', .type = SUBST_MINOR }, ++ { .name = "result", .fmt = 'c', .type = SUBST_RESULT }, ++ { .name = "parent", .fmt = 'P', .type = SUBST_PARENT }, ++ { .name = "name", .fmt = 'D', .type = SUBST_NAME }, ++ { .name = "links", .fmt = 'L', .type = SUBST_LINKS }, ++ { .name = "root", .fmt = 'r', .type = SUBST_ROOT }, ++ { .name = "sys", .fmt = 'S', .type = SUBST_SYS }, + }; + const char *from; + char *s; diff --git a/1015-udev-properly-handle-symlink-removal-by-change-event.patch b/1015-udev-properly-handle-symlink-removal-by-change-event.patch new file mode 100644 index 00000000..e579a466 --- /dev/null +++ b/1015-udev-properly-handle-symlink-removal-by-change-event.patch @@ -0,0 +1,69 @@ +From bf9d233f781f27841be6638ee745e9c80bda5f4d Mon Sep 17 00:00:00 2001 +From: Kay Sievers +Date: Tue, 13 Nov 2012 02:05:06 +0100 +Subject: [PATCH] udev: properly handle symlink removal by 'change' event + +If a 'change' event is supposed to remove created symlinks, we create +a new device structure from the sysfs device and fill it with the list +of links, to compute the delta of the old and new list of links to apply. +If the device is already 'remove'd by the kernel though, udev fails to +create the device structure, so the links are not removed properly. + +> From: Neil Brown +> Date: Thu, 8 Nov 2012 10:39:06 +0100 +> Subject: [PATCH] If a 'change' event does not get handled by udev until +> after the device has subsequently disappeared, udev mis-handles +> it. This can happen with 'md' devices which emit a change +> event and then a remove event when they are stopped. It is +> normally only noticed if udev is very busy (lots of arrays +> being stopped at once) or the machine is otherwise loaded +> and reponding slowly. +> +> There are two problems. +> +> 1/ udev_device_new_from_syspath() will refuse to create the device +> structure if the device does not exist in /sys, and particularly if +> the uevent file does not exist. +> If a 'db' file does exist, that is sufficient evidence that the device +> is genuine and should be created. Equally if we have just received an +> event from the kernel about the device, it must be real. +> +> This patch just disabled the test for the 'uevent' file, it doesn't +> try imposing any other tests - it isn't clear that they are really +> needed. +> +> 2/ udev_event_execute_rules() calls udev_device_read_db() on a 'device' +> structure that is largely uninitialised and in particular does not +> have the 'subsystem' set. udev_device_read_db() needs the subsystem +> so it tries to read the 'subsystem' symlink out of sysfs. If the +> device is already deleted, this naturally fails. +> udev_event_execute_rules() knows the subsystem (as it was in the +> event message) so this patch simply sets the subsystem for the device +> structure to be loaded to match the subsystem of the device structure +> that is handling the event. +> +> With these two changes, deleted handling of change events will still +> correctly remove any symlinks that are not needed any more. + +Use udev_device_new() instead of allowing udev_device_new_from_syspath() +to proceed without a sysfs device. +--- + src/udev/udev-event.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +Index: systemd-195/src/udev/udev-event.c +=================================================================== +--- systemd-195.orig/src/udev/udev-event.c ++++ systemd-195/src/udev/udev-event.c +@@ -797,8 +797,10 @@ int udev_event_execute_rules(struct udev + if (major(udev_device_get_devnum(dev)) != 0) + udev_node_remove(dev); + } else { +- event->dev_db = udev_device_new_from_syspath(event->udev, udev_device_get_syspath(dev)); ++ event->dev_db = udev_device_new(event->udev); + if (event->dev_db != NULL) { ++ udev_device_set_syspath(event->dev_db, udev_device_get_syspath(dev)); ++ udev_device_set_subsystem(event->dev_db, udev_device_get_subsystem(dev)); + udev_device_read_db(event->dev_db, NULL); + udev_device_set_info_loaded(event->dev_db); + diff --git a/1016-udev-builtin-do-not-fail-builtin-initialization-if-o.patch b/1016-udev-builtin-do-not-fail-builtin-initialization-if-o.patch new file mode 100644 index 00000000..bf6d799e --- /dev/null +++ b/1016-udev-builtin-do-not-fail-builtin-initialization-if-o.patch @@ -0,0 +1,64 @@ +Index: systemd-195/src/udev/udev-builtin.c +=================================================================== +--- systemd-195.orig/src/udev/udev-builtin.c ++++ systemd-195/src/udev/udev-builtin.c +@@ -42,24 +42,18 @@ static const struct udev_builtin *builti + #endif + }; + +-int udev_builtin_init(struct udev *udev) ++void udev_builtin_init(struct udev *udev) + { + unsigned int i; +- int err = 0; + + if (initialized) +- return 0; ++ return; + +- for (i = 0; i < ELEMENTSOF(builtins); i++) { +- if (builtins[i]->init) { +- err = builtins[i]->init(udev); +- if (err < 0) +- break; +- } +- } ++ for (i = 0; i < ELEMENTSOF(builtins); i++) ++ if (builtins[i]->init) ++ builtins[i]->init(udev); + + initialized = true; +- return err; + } + + void udev_builtin_exit(struct udev *udev) +@@ -79,13 +73,11 @@ void udev_builtin_exit(struct udev *udev + bool udev_builtin_validate(struct udev *udev) + { + unsigned int i; +- bool change = false; + + for (i = 0; i < ELEMENTSOF(builtins); i++) +- if (builtins[i]->validate) +- if (builtins[i]->validate(udev)) +- change = true; +- return change; ++ if (builtins[i]->validate && builtins[i]->validate(udev)) ++ return true; ++ return false; + } + + void udev_builtin_list(struct udev *udev) +Index: systemd-195/src/udev/udev.h +=================================================================== +--- systemd-195.orig/src/udev/udev.h ++++ systemd-195/src/udev/udev.h +@@ -167,7 +167,7 @@ extern const struct udev_builtin udev_bu + extern const struct udev_builtin udev_builtin_usb_db; + extern const struct udev_builtin udev_builtin_usb_id; + extern const struct udev_builtin udev_builtin_uaccess; +-int udev_builtin_init(struct udev *udev); ++void udev_builtin_init(struct udev *udev); + void udev_builtin_exit(struct udev *udev); + enum udev_builtin_cmd udev_builtin_lookup(const char *command); + const char *udev_builtin_name(enum udev_builtin_cmd cmd); diff --git a/1017-udev-use-usec_t-and-now.patch b/1017-udev-use-usec_t-and-now.patch new file mode 100644 index 00000000..ca0b0131 --- /dev/null +++ b/1017-udev-use-usec_t-and-now.patch @@ -0,0 +1,335 @@ +Index: systemd-195/src/libudev/libudev-device-private.c +=================================================================== +--- systemd-195.orig/src/libudev/libudev-device-private.c ++++ systemd-195/src/libudev/libudev-device-private.c +@@ -147,7 +147,7 @@ int udev_device_update_db(struct udev_de + } + + if (udev_device_get_usec_initialized(udev_device) > 0) +- fprintf(f, "I:%llu\n", udev_device_get_usec_initialized(udev_device)); ++ fprintf(f, "I:%llu\n", (unsigned long long)udev_device_get_usec_initialized(udev_device)); + + udev_list_entry_foreach(list_entry, udev_device_get_properties_list_entry(udev_device)) { + if (!udev_list_entry_get_num(list_entry)) +Index: systemd-195/src/libudev/libudev-device.c +=================================================================== +--- systemd-195.orig/src/libudev/libudev-device.c ++++ systemd-195/src/libudev/libudev-device.c +@@ -67,7 +67,7 @@ struct udev_device { + struct udev_list sysattr_list; + struct udev_list tags_list; + unsigned long long int seqnum; +- unsigned long long int usec_initialized; ++ usec_t usec_initialized; + int timeout; + int devlink_priority; + int refcount; +@@ -262,7 +262,7 @@ static int udev_device_set_devtype(struc + return 0; + } + +-static int udev_device_set_subsystem(struct udev_device *udev_device, const char *subsystem) ++int udev_device_set_subsystem(struct udev_device *udev_device, const char *subsystem) + { + free(udev_device->subsystem); + udev_device->subsystem = strdup(subsystem); +@@ -1286,7 +1286,7 @@ _public_ const char *udev_device_get_act + **/ + _public_ unsigned long long int udev_device_get_usec_since_initialized(struct udev_device *udev_device) + { +- unsigned long long now_ts; ++ usec_t now_ts; + + if (udev_device == NULL) + return 0; +@@ -1294,23 +1294,23 @@ _public_ unsigned long long int udev_dev + udev_device_read_db(udev_device, NULL); + if (udev_device->usec_initialized == 0) + return 0; +- now_ts = now_usec(); ++ now_ts = now(CLOCK_MONOTONIC); + if (now_ts == 0) + return 0; + return now_ts - udev_device->usec_initialized; + } + +-unsigned long long udev_device_get_usec_initialized(struct udev_device *udev_device) ++usec_t udev_device_get_usec_initialized(struct udev_device *udev_device) + { + return udev_device->usec_initialized; + } + +-void udev_device_set_usec_initialized(struct udev_device *udev_device, unsigned long long usec_initialized) ++void udev_device_set_usec_initialized(struct udev_device *udev_device, usec_t usec_initialized) + { + char num[32]; + + udev_device->usec_initialized = usec_initialized; +- snprintf(num, sizeof(num), "%llu", usec_initialized); ++ snprintf(num, sizeof(num), "%llu", (unsigned long long)usec_initialized); + udev_device_add_property(udev_device, "USEC_INITIALIZED", num); + } + +Index: systemd-195/src/libudev/libudev-private.h +=================================================================== +--- systemd-195.orig/src/libudev/libudev-private.h ++++ systemd-195/src/libudev/libudev-private.h +@@ -48,6 +48,7 @@ struct udev_list_entry *udev_get_propert + /* libudev-device.c */ + struct udev_device *udev_device_new(struct udev *udev); + mode_t udev_device_get_devnode_mode(struct udev_device *udev_device); ++int udev_device_set_subsystem(struct udev_device *udev_device, const char *subsystem); + int udev_device_set_syspath(struct udev_device *udev_device, const char *syspath); + int udev_device_set_devnode(struct udev_device *udev_device, const char *devnode); + int udev_device_add_devlink(struct udev_device *udev_device, const char *devlink); +@@ -66,8 +67,8 @@ void udev_device_set_is_initialized(stru + int udev_device_add_tag(struct udev_device *udev_device, const char *tag); + void udev_device_cleanup_tags_list(struct udev_device *udev_device); + int udev_device_get_timeout(struct udev_device *udev_device); +-unsigned long long udev_device_get_usec_initialized(struct udev_device *udev_device); +-void udev_device_set_usec_initialized(struct udev_device *udev_device, unsigned long long usec_initialized); ++usec_t udev_device_get_usec_initialized(struct udev_device *udev_device); ++void udev_device_set_usec_initialized(struct udev_device *udev_device, usec_t usec_initialized); + int udev_device_get_devlink_priority(struct udev_device *udev_device); + int udev_device_set_devlink_priority(struct udev_device *udev_device, int prio); + int udev_device_get_watch_handle(struct udev_device *udev_device); +@@ -166,7 +167,5 @@ uid_t util_lookup_user(struct udev *udev + gid_t util_lookup_group(struct udev *udev, const char *group); + int util_resolve_subsys_kernel(struct udev *udev, const char *string, + char *result, size_t maxsize, int read_value); +-unsigned long long ts_usec(const struct timespec *ts); +-unsigned long long now_usec(void); + ssize_t print_kmsg(const char *fmt, ...) __attribute__((format(printf, 1, 2))); + #endif +Index: systemd-195/src/libudev/libudev-util.c +=================================================================== +--- systemd-195.orig/src/libudev/libudev-util.c ++++ systemd-195/src/libudev/libudev-util.c +@@ -691,23 +691,6 @@ uint64_t util_string_bloom64(const char + return bits; + } + +-#define USEC_PER_SEC 1000000ULL +-#define NSEC_PER_USEC 1000ULL +-unsigned long long ts_usec(const struct timespec *ts) +-{ +- return (unsigned long long) ts->tv_sec * USEC_PER_SEC + +- (unsigned long long) ts->tv_nsec / NSEC_PER_USEC; +-} +- +-unsigned long long now_usec(void) +-{ +- struct timespec ts; +- +- if (clock_gettime(CLOCK_MONOTONIC, &ts) != 0) +- return 0; +- return ts_usec(&ts); +-} +- + ssize_t print_kmsg(const char *fmt, ...) + { + int fd; +Index: systemd-195/src/udev/udev-event.c +=================================================================== +--- systemd-195.orig/src/udev/udev-event.c ++++ systemd-195/src/udev/udev-event.c +@@ -48,7 +48,7 @@ struct udev_event *udev_event_new(struct + event->udev = udev; + udev_list_init(udev, &event->run_list, false); + event->fd_signal = -1; +- event->birth_usec = now_usec(); ++ event->birth_usec = now(CLOCK_MONOTONIC); + event->timeout_usec = 30 * 1000 * 1000; + return event; + } +@@ -466,9 +466,9 @@ static void spawn_read(struct udev_event + int i; + + if (event->timeout_usec > 0) { +- unsigned long long age_usec; ++ usec_t age_usec; + +- age_usec = now_usec() - event->birth_usec; ++ age_usec = now(CLOCK_MONOTONIC) - event->birth_usec; + if (age_usec >= event->timeout_usec) { + log_error("timeout '%s'\n", cmd); + goto out; +@@ -554,9 +554,9 @@ static int spawn_wait(struct udev_event + int fdcount; + + if (event->timeout_usec > 0) { +- unsigned long long age_usec; ++ usec_t age_usec; + +- age_usec = now_usec() - event->birth_usec; ++ age_usec = now(CLOCK_MONOTONIC) - event->birth_usec; + if (age_usec >= event->timeout_usec) + timeout = 1000; + else +@@ -862,7 +862,7 @@ int udev_event_execute_rules(struct udev + if (event->dev_db != NULL && udev_device_get_usec_initialized(event->dev_db) > 0) + udev_device_set_usec_initialized(event->dev, udev_device_get_usec_initialized(event->dev_db)); + else if (udev_device_get_usec_initialized(event->dev) == 0) +- udev_device_set_usec_initialized(event->dev, now_usec()); ++ udev_device_set_usec_initialized(event->dev, now(CLOCK_MONOTONIC)); + + /* (re)write database file */ + udev_device_update_db(dev); +Index: systemd-195/src/udev/udev-rules.c +=================================================================== +--- systemd-195.orig/src/udev/udev-rules.c ++++ systemd-195/src/udev/udev-rules.c +@@ -47,7 +47,7 @@ struct uid_gid { + struct udev_rules { + struct udev *udev; + char **dirs; +- unsigned long long *dirs_ts_usec; ++ usec_t *dirs_ts_usec; + int resolve_names; + + /* every key in the rules file becomes a token */ +@@ -1691,7 +1691,7 @@ bool udev_rules_check_timestamp(struct u + if (stat(rules->dirs[i], &stats) < 0) + continue; + +- if (rules->dirs_ts_usec[i] == ts_usec(&stats.st_mtim)) ++ if (rules->dirs_ts_usec[i] == timespec_load(&stats.st_mtim)) + continue; + + /* first check */ +@@ -1701,7 +1701,7 @@ bool udev_rules_check_timestamp(struct u + } + + /* update timestamp */ +- rules->dirs_ts_usec[i] = ts_usec(&stats.st_mtim); ++ rules->dirs_ts_usec[i] = timespec_load(&stats.st_mtim); + } + out: + return changed; +Index: systemd-195/src/udev/udev.h +=================================================================== +--- systemd-195.orig/src/udev/udev.h ++++ systemd-195/src/udev/udev.h +@@ -41,8 +41,8 @@ struct udev_event { + gid_t gid; + struct udev_list run_list; + int exec_delay; +- unsigned long long birth_usec; +- unsigned long long timeout_usec; ++ usec_t birth_usec; ++ usec_t timeout_usec; + int fd_signal; + unsigned int builtin_run; + unsigned int builtin_ret; +Index: systemd-195/src/udev/udevadm-settle.c +=================================================================== +--- systemd-195.orig/src/udev/udevadm-settle.c ++++ systemd-195/src/udev/udevadm-settle.c +@@ -47,9 +47,9 @@ static int adm_settle(struct udev *udev, + { "help", no_argument, NULL, 'h' }, + {} + }; +- unsigned long long start_usec = now_usec(); +- unsigned long long start = 0; +- unsigned long long end = 0; ++ usec_t start_usec = now(CLOCK_MONOTONIC); ++ usec_t start = 0; ++ usec_t end = 0; + int quiet = 0; + const char *exists = NULL; + unsigned int timeout = 120; +@@ -123,7 +123,7 @@ static int adm_settle(struct udev *udev, + start = 0; + end = 0; + } +- log_debug("start=%llu end=%llu current=%llu\n", start, end, kernel_seq); ++ log_debug("start=%llu end=%llu current=%llu\n", (unsigned long long)start, (unsigned long long)end, kernel_seq); + } else { + if (end > 0) { + log_error("seq-end needs seq-start parameter, ignoring\n"); +@@ -199,9 +199,9 @@ static int adm_settle(struct udev *udev, + } + + if (timeout > 0) { +- unsigned long long age_usec; ++ usec_t age_usec; + +- age_usec = now_usec() - start_usec; ++ age_usec = now(CLOCK_MONOTONIC) - start_usec; + if (age_usec / (1000 * 1000) >= timeout) { + struct udev_list_entry *list_entry; + +Index: systemd-195/src/udev/udevd.c +=================================================================== +--- systemd-195.orig/src/udev/udevd.c ++++ systemd-195/src/udev/udevd.c +@@ -122,7 +122,7 @@ struct worker { + struct udev_monitor *monitor; + enum worker_state state; + struct event *event; +- unsigned long long event_start_usec; ++ usec_t event_start_usec; + }; + + /* passed from worker to main process */ +@@ -378,7 +378,7 @@ out: + worker->monitor = worker_monitor; + worker->pid = pid; + worker->state = WORKER_RUNNING; +- worker->event_start_usec = now_usec(); ++ worker->event_start_usec = now(CLOCK_MONOTONIC); + worker->event = event; + event->state = EVENT_RUNNING; + udev_list_node_append(&worker->node, &worker_list); +@@ -409,7 +409,7 @@ static void event_run(struct event *even + worker_ref(worker); + worker->event = event; + worker->state = WORKER_RUNNING; +- worker->event_start_usec = now_usec(); ++ worker->event_start_usec = now(CLOCK_MONOTONIC); + event->state = EVENT_RUNNING; + return; + } +@@ -1381,7 +1381,7 @@ int main(int argc, char *argv[]) + udev_list_node_init(&worker_list); + + for (;;) { +- static unsigned long long last_usec; ++ static usec_t last_usec; + struct epoll_event ev[8]; + int fdcount; + int timeout; +@@ -1452,7 +1452,7 @@ int main(int argc, char *argv[]) + if (worker->state != WORKER_RUNNING) + continue; + +- if ((now_usec() - worker->event_start_usec) > 30 * 1000 * 1000) { ++ if ((now(CLOCK_MONOTONIC) - worker->event_start_usec) > 30 * 1000 * 1000) { + log_error("worker [%u] %s timeout; kill it\n", worker->pid, + worker->event ? worker->event->devpath : ""); + kill(worker->pid, SIGKILL); +@@ -1486,13 +1486,13 @@ int main(int argc, char *argv[]) + } + + /* check for changed config, every 3 seconds at most */ +- if ((now_usec() - last_usec) > 3 * 1000 * 1000) { ++ if ((now(CLOCK_MONOTONIC) - last_usec) > 3 * 1000 * 1000) { + if (udev_rules_check_timestamp(rules)) + reload = true; + if (udev_builtin_validate(udev)) + reload = true; + +- last_usec = now_usec(); ++ last_usec = now(CLOCK_MONOTONIC); + } + + /* reload requested, HUP signal received, rules changed, builtin changed */ +@@ -1512,7 +1512,7 @@ int main(int argc, char *argv[]) + + dev = udev_monitor_receive_device(monitor); + if (dev != NULL) { +- udev_device_set_usec_initialized(dev, now_usec()); ++ udev_device_set_usec_initialized(dev, now(CLOCK_MONOTONIC)); + if (rules == NULL) + rules = udev_rules_new(udev, resolve_names); + if (event_queue_insert(dev) < 0) diff --git a/fix-build-glibc217.patch b/fix-build-glibc217.patch index fe35a571..d4a2d8ec 100644 --- a/fix-build-glibc217.patch +++ b/fix-build-glibc217.patch @@ -14,11 +14,11 @@ Fixes a FTBFS in Fedora Rawhide. configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/configure.ac b/configure.ac -index c4638d1..71ea6ad 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -171,7 +171,7 @@ CC_CHECK_FLAGS_APPEND([with_ldflags], [LDFLAGS], [\ +Index: systemd-195/configure.ac +=================================================================== +--- systemd-195.orig/configure.ac ++++ systemd-195/configure.ac +@@ -172,7 +172,7 @@ CC_CHECK_FLAGS_APPEND([with_ldflags], [L -Wl,-z,now]) AC_SUBST([OUR_LDFLAGS], $with_ldflags) @@ -27,6 +27,3 @@ index c4638d1..71ea6ad 100644 AC_SEARCH_LIBS([dlsym], [dl], [], [AC_MSG_ERROR([*** Dynamic linking loader library not found])]) save_LIBS="$LIBS" --- -1.7.10.4 - diff --git a/fix-dbus-crash.patch b/fix-dbus-crash.patch index caf53645..dcf6c8f1 100644 --- a/fix-dbus-crash.patch +++ b/fix-dbus-crash.patch @@ -15,11 +15,11 @@ Walters' comment.] src/core/dbus-manager.c | 1 - 1 file changed, 1 deletion(-) -diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c -index 2010241..3cf3e90 100644 ---- a/src/core/dbus-manager.c -+++ b/src/core/dbus-manager.c -@@ -1436,7 +1436,6 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection, +Index: systemd-195/src/core/dbus-manager.c +=================================================================== +--- systemd-195.orig/src/core/dbus-manager.c ++++ systemd-195/src/core/dbus-manager.c +@@ -1432,7 +1432,6 @@ static DBusHandlerResult bus_manager_mes r = unit_file_get_list(m->running_as == SYSTEMD_SYSTEM ? UNIT_FILE_SYSTEM : UNIT_FILE_USER, NULL, h); if (r < 0) { unit_file_list_free(h); @@ -27,6 +27,3 @@ index 2010241..3cf3e90 100644 return bus_send_error_reply(connection, message, NULL, r); } --- -1.7.10.4 - diff --git a/fix-logind-pty-seat.patch b/fix-logind-pty-seat.patch index 50b3a3da..079c5baf 100644 --- a/fix-logind-pty-seat.patch +++ b/fix-logind-pty-seat.patch @@ -10,11 +10,11 @@ same session as the X session itself. src/login/logind-dbus.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) -diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c -index 4326e5b..8b6021d 100644 ---- a/src/login/logind-dbus.c -+++ b/src/login/logind-dbus.c -@@ -415,8 +415,7 @@ static int bus_manager_create_session(Manager *m, DBusMessage *message, DBusMess +Index: systemd-195/src/login/logind-dbus.c +=================================================================== +--- systemd-195.orig/src/login/logind-dbus.c ++++ systemd-195/src/login/logind-dbus.c +@@ -409,8 +409,7 @@ static int bus_manager_create_session(Ma if (vtnr != 0) return -EINVAL; @@ -24,6 +24,3 @@ index 4326e5b..8b6021d 100644 if (s) { if (seat_can_multi_session(s)) { --- -1.7.10.4 - diff --git a/mount-efivars.patch b/mount-efivars.patch index e13e52d1..23cb3a8c 100644 --- a/mount-efivars.patch +++ b/mount-efivars.patch @@ -24,102 +24,18 @@ Signed-off-by: Lee, Chun-Yi src/core/mount-setup.c | 1 + 2 files changed, 5 insertions(+), 3 deletions(-) -diff --git a/src/core/kmod-setup.c b/src/core/kmod-setup.c -index cc2a2d9..ce8a8e7 100644 ---- a/src/core/kmod-setup.c -+++ b/src/core/kmod-setup.c -@@ -31,9 +31,10 @@ - #include "kmod-setup.h" - - static const char * const kmod_table[] = { -- "autofs4", "/sys/class/misc/autofs", -- "ipv6", "/sys/module/ipv6", -- "unix", "/proc/net/unix" -+ "autofs4", "/sys/class/misc/autofs", -+ "ipv6", "/sys/module/ipv6", -+ "efivarfs", "/sys/firmware/efi/efivars", -+ "unix", "/proc/net/unix" - }; - - #pragma GCC diagnostic push -diff --git a/src/core/mount-setup.c b/src/core/mount-setup.c -index 0fd112f..9894c7f 100644 ---- a/src/core/mount-setup.c -+++ b/src/core/mount-setup.c -@@ -66,6 +66,7 @@ static const MountPoint mount_table[] = { - { "sysfs", "/sys", "sysfs", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV, true, true }, - { "devtmpfs", "/dev", "devtmpfs", "mode=755", MS_NOSUID|MS_STRICTATIME, true, true }, - { "securityfs", "/sys/kernel/security", "securityfs", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV, false, false }, -+ { "efivarfs", "/sys/firmware/efi/efivars", "efivarfs", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV, false, false }, - { "tmpfs", "/dev/shm", "tmpfs", "mode=1777", MS_NOSUID|MS_NODEV|MS_STRICTATIME, true, true }, - { "devpts", "/dev/pts", "devpts", "mode=620,gid=" STRINGIFY(TTY_GID), MS_NOSUID|MS_NOEXEC, false, true }, - { "tmpfs", "/run", "tmpfs", "mode=755", MS_NOSUID|MS_NODEV|MS_STRICTATIME, true, true }, --- -1.7.10.4 - -From c1e5704657315b436c0409e8172c1fcb76adccad Mon Sep 17 00:00:00 2001 -From: Kay Sievers -Date: Sun, 4 Nov 2012 16:06:27 +0100 -Subject: [PATCH] shared: add is_efiboot() - ---- - src/shared/util.c | 4 ++++ - src/shared/util.h | 2 ++ - 2 files changed, 6 insertions(+) - -diff --git a/src/shared/util.c b/src/shared/util.c -index 2a8afae..9983695 100644 ---- a/src/shared/util.c -+++ b/src/shared/util.c -@@ -77,6 +77,10 @@ char **saved_argv = NULL; - static volatile unsigned cached_columns = 0; - static volatile unsigned cached_lines = 0; - -+bool is_efiboot(void) { -+ return access("/sys/firmware/efi", F_OK) >= 0; -+} -+ - size_t page_size(void) { - static __thread size_t pgsz = 0; - long r; -diff --git a/src/shared/util.h b/src/shared/util.h -index e387b12..99972cc 100644 ---- a/src/shared/util.h -+++ b/src/shared/util.h -@@ -90,6 +90,8 @@ union dirent_storage { - #define ANSI_HIGHLIGHT_YELLOW_ON "\x1B[1;33m" - #define ANSI_HIGHLIGHT_OFF "\x1B[0m" - -+bool is_efiboot(void); -+ - usec_t now(clockid_t clock); - - dual_timestamp* dual_timestamp_get(dual_timestamp *ts); --- -1.7.10.4 - -From 1022373284b7562431fb0a6dba45db8af089a0e3 Mon Sep 17 00:00:00 2001 -From: Kay Sievers -Date: Sun, 4 Nov 2012 16:54:19 +0100 -Subject: [PATCH] kmod-setup: add conditional module loading callback - ---- - src/core/kmod-setup.c | 32 ++++++++++++++++++++------------ - 1 file changed, 20 insertions(+), 12 deletions(-) - -diff --git a/src/core/kmod-setup.c b/src/core/kmod-setup.c -index ce8a8e7..383a6b2 100644 ---- a/src/core/kmod-setup.c -+++ b/src/core/kmod-setup.c -@@ -30,11 +30,17 @@ +Index: systemd-195/src/core/kmod-setup.c +=================================================================== +--- systemd-195.orig/src/core/kmod-setup.c ++++ systemd-195/src/core/kmod-setup.c +@@ -30,10 +30,16 @@ #include "kmod-setup.h" -static const char * const kmod_table[] = { -- "autofs4", "/sys/class/misc/autofs", -- "ipv6", "/sys/module/ipv6", -- "efivarfs", "/sys/firmware/efi/efivars", -- "unix", "/proc/net/unix" +- "autofs4", "/sys/class/misc/autofs", +- "ipv6", "/sys/module/ipv6", +- "unix", "/proc/net/unix" +typedef struct Kmodule { + const char *name; + const char *directory; @@ -129,12 +45,11 @@ index ce8a8e7..383a6b2 100644 +static const KModule kmod_table[] = { + { "autofs4", "/sys/class/misc/autofs", NULL } , + { "ipv6", "/sys/module/ipv6", NULL }, -+ { "efivarfs", "/sys/firmware/efi/efivars", NULL }, + { "unix", "/proc/net/unix", NULL } , }; #pragma GCC diagnostic push -@@ -42,7 +48,8 @@ static const char * const kmod_table[] = { +@@ -41,7 +47,8 @@ static const char * const kmod_table[] = static void systemd_kmod_log(void *data, int priority, const char *file, int line, const char *fn, const char *format, va_list args) { @@ -144,7 +59,7 @@ index ce8a8e7..383a6b2 100644 } #pragma GCC diagnostic pop -@@ -53,13 +60,15 @@ int kmod_setup(void) { +@@ -52,13 +59,15 @@ int kmod_setup(void) { int err; for (i = 0; i < ELEMENTSOF(kmod_table); i += 2) { @@ -162,7 +77,7 @@ index ce8a8e7..383a6b2 100644 if (!ctx) { ctx = kmod_new(NULL, NULL); -@@ -69,13 +78,12 @@ int kmod_setup(void) { +@@ -68,13 +77,12 @@ int kmod_setup(void) { } kmod_set_log_fn(ctx, systemd_kmod_log, NULL); @@ -178,7 +93,7 @@ index ce8a8e7..383a6b2 100644 continue; } -@@ -85,7 +93,7 @@ int kmod_setup(void) { +@@ -84,7 +92,7 @@ int kmod_setup(void) { else if (err == KMOD_PROBE_APPLY_BLACKLIST) log_info("Module '%s' is blacklisted", kmod_module_get_name(mod)); else @@ -187,52 +102,10 @@ index ce8a8e7..383a6b2 100644 kmod_module_unref(mod); } --- -1.7.10.4 - -From 3dfb265083347cb5700dc38f7cc0f479f378e6e9 Mon Sep 17 00:00:00 2001 -From: Kay Sievers -Date: Sun, 4 Nov 2012 16:55:23 +0100 -Subject: [PATCH] kmod-setup: mounting efivarfs, *after* we tried to mount it, - is pointless - -The mount() system call, which we issue before loading modules, will trigger -a modprobe by the kernel and block until it returns. Trying to load it again -later, will have exactly the same result as the first time. ---- - src/core/kmod-setup.c | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/src/core/kmod-setup.c b/src/core/kmod-setup.c -index 383a6b2..20ab232 100644 ---- a/src/core/kmod-setup.c -+++ b/src/core/kmod-setup.c -@@ -39,7 +39,6 @@ typedef struct Kmodule { - static const KModule kmod_table[] = { - { "autofs4", "/sys/class/misc/autofs", NULL } , - { "ipv6", "/sys/module/ipv6", NULL }, -- { "efivarfs", "/sys/firmware/efi/efivars", NULL }, - { "unix", "/proc/net/unix", NULL } , - }; - --- -1.7.10.4 - -From 6aa220e019f9dffd96590b06b68f937985204109 Mon Sep 17 00:00:00 2001 -From: Kay Sievers -Date: Sun, 4 Nov 2012 17:03:48 +0100 -Subject: [PATCH] mount-setup: try mounting 'efivarfs' only if the system - bootet with EFI - ---- - TODO | 3 --- - src/core/mount-setup.c | 50 ++++++++++++++++++++++++++++++++---------------- - 2 files changed, 34 insertions(+), 19 deletions(-) - -diff --git a/src/core/mount-setup.c b/src/core/mount-setup.c -index 9894c7f..98614d0 100644 ---- a/src/core/mount-setup.c -+++ b/src/core/mount-setup.c +Index: systemd-195/src/core/mount-setup.c +=================================================================== +--- systemd-195.orig/src/core/mount-setup.c ++++ systemd-195/src/core/mount-setup.c @@ -46,14 +46,20 @@ #define TTY_GID 5 #endif @@ -256,7 +129,7 @@ index 9894c7f..98614d0 100644 } MountPoint; /* The first three entries we might need before SELinux is up. The -@@ -62,16 +68,26 @@ typedef struct MountPoint { +@@ -62,15 +68,26 @@ typedef struct MountPoint { #define N_EARLY_MOUNT 4 static const MountPoint mount_table[] = { @@ -264,7 +137,6 @@ index 9894c7f..98614d0 100644 - { "sysfs", "/sys", "sysfs", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV, true, true }, - { "devtmpfs", "/dev", "devtmpfs", "mode=755", MS_NOSUID|MS_STRICTATIME, true, true }, - { "securityfs", "/sys/kernel/security", "securityfs", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV, false, false }, -- { "efivarfs", "/sys/firmware/efi/efivars", "efivarfs", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV, false, false }, - { "tmpfs", "/dev/shm", "tmpfs", "mode=1777", MS_NOSUID|MS_NODEV|MS_STRICTATIME, true, true }, - { "devpts", "/dev/pts", "devpts", "mode=620,gid=" STRINGIFY(TTY_GID), MS_NOSUID|MS_NOEXEC, false, true }, - { "tmpfs", "/run", "tmpfs", "mode=755", MS_NOSUID|MS_NODEV|MS_STRICTATIME, true, true }, @@ -293,7 +165,7 @@ index 9894c7f..98614d0 100644 }; /* These are API file systems that might be mounted by other software, -@@ -119,6 +135,9 @@ static int mount_one(const MountPoint *p, bool relabel) { +@@ -118,6 +135,9 @@ static int mount_one(const MountPoint *p assert(p); @@ -303,7 +175,7 @@ index 9894c7f..98614d0 100644 /* Relabel first, just in case */ if (relabel) label_fix(p->where, true, true); -@@ -131,7 +150,7 @@ static int mount_one(const MountPoint *p, bool relabel) { +@@ -130,7 +150,7 @@ static int mount_one(const MountPoint *p return 0; /* Skip securityfs in a container */ @@ -312,7 +184,7 @@ index 9894c7f..98614d0 100644 return 0; /* The access mode here doesn't really matter too much, since -@@ -149,8 +168,8 @@ static int mount_one(const MountPoint *p, bool relabel) { +@@ -148,8 +168,8 @@ static int mount_one(const MountPoint *p p->type, p->flags, p->options) < 0) { @@ -323,7 +195,7 @@ index 9894c7f..98614d0 100644 } /* Relabel again, since we now mounted something fresh here */ -@@ -289,7 +308,6 @@ int mount_cgroup_controllers(char ***join_controllers) { +@@ -288,7 +308,6 @@ int mount_cgroup_controllers(char ***joi p.type = "cgroup"; p.options = options; p.flags = MS_NOSUID|MS_NOEXEC|MS_NODEV; @@ -331,6 +203,31 @@ index 9894c7f..98614d0 100644 r = mount_one(&p, true); free(controller); --- -1.7.10.4 - +Index: systemd-195/src/shared/util.c +=================================================================== +--- systemd-195.orig/src/shared/util.c ++++ systemd-195/src/shared/util.c +@@ -75,6 +75,10 @@ char **saved_argv = NULL; + static volatile unsigned cached_columns = 0; + static volatile unsigned cached_lines = 0; + ++bool is_efiboot(void) { ++ return access("/sys/firmware/efi", F_OK) >= 0; ++} ++ + size_t page_size(void) { + static __thread size_t pgsz = 0; + long r; +Index: systemd-195/src/shared/util.h +=================================================================== +--- systemd-195.orig/src/shared/util.h ++++ systemd-195/src/shared/util.h +@@ -90,6 +90,8 @@ union dirent_storage { + #define ANSI_HIGHLIGHT_YELLOW_ON "\x1B[1;33m" + #define ANSI_HIGHLIGHT_OFF "\x1B[0m" + ++bool is_efiboot(void); ++ + usec_t now(clockid_t clock); + + dual_timestamp* dual_timestamp_get(dual_timestamp *ts); diff --git a/new-lsb-headers.patch b/new-lsb-headers.patch index 2c20a481..e48728fb 100644 --- a/new-lsb-headers.patch +++ b/new-lsb-headers.patch @@ -1,8 +1,8 @@ -Index: systemd-189/src/core/service.c +Index: systemd-195/src/core/service.c =================================================================== ---- systemd-189.orig/src/core/service.c -+++ systemd-189/src/core/service.c -@@ -145,6 +145,7 @@ static void service_init(Unit *u) { +--- systemd-195.orig/src/core/service.c ++++ systemd-195/src/core/service.c +@@ -146,6 +146,7 @@ static void service_init(Unit *u) { #ifdef HAVE_SYSV_COMPAT s->sysv_start_priority = -1; s->sysv_start_priority_from_rcnd = -1; @@ -10,7 +10,7 @@ Index: systemd-189/src/core/service.c #endif s->socket_fd = -1; s->guess_main_pid = true; -@@ -877,6 +878,34 @@ static int service_load_sysv_path(Servic +@@ -906,6 +907,34 @@ static int service_load_sysv_path(Servic free(short_description); short_description = d; @@ -45,7 +45,7 @@ Index: systemd-189/src/core/service.c } else if (state == LSB_DESCRIPTION) { if (startswith(l, "#\t") || startswith(l, "# ")) { -@@ -935,7 +964,8 @@ static int service_load_sysv_path(Servic +@@ -963,7 +992,8 @@ static int service_load_sysv_path(Servic /* Special setting for all SysV services */ s->type = SERVICE_FORKING; @@ -55,7 +55,7 @@ Index: systemd-189/src/core/service.c s->guess_main_pid = false; s->restart = SERVICE_RESTART_NO; s->exec_context.ignore_sigpipe = false; -@@ -2107,7 +2137,7 @@ static void service_enter_running(Servic +@@ -2138,7 +2168,7 @@ static void service_enter_running(Servic if ((main_pid_ok > 0 || (main_pid_ok < 0 && cgroup_ok != 0)) && (s->bus_name_good || s->type != SERVICE_DBUS)) { #ifdef HAVE_SYSV_COMPAT @@ -64,10 +64,10 @@ Index: systemd-189/src/core/service.c s->remain_after_exit = false; #endif service_set_state(s, SERVICE_RUNNING); -Index: systemd-189/src/core/service.h +Index: systemd-195/src/core/service.h =================================================================== ---- systemd-189.orig/src/core/service.h -+++ systemd-189/src/core/service.h +--- systemd-195.orig/src/core/service.h ++++ systemd-195/src/core/service.h @@ -176,6 +176,7 @@ struct Service { bool is_sysv:1; bool sysv_has_lsb:1; diff --git a/support-sysvinit.patch b/support-sysvinit.patch index 98c91ce2..2057a634 100644 --- a/support-sysvinit.patch +++ b/support-sysvinit.patch @@ -1,8 +1,8 @@ -Index: systemd-36/src/systemctl.c +Index: systemd-195/src/systemctl/systemctl.c =================================================================== ---- systemd-36.orig/src/systemctl/systemctl.c -+++ systemd-36/src/systemctl/systemctl.c -@@ -4672,10 +4672,13 @@ static int parse_argv(int argc, char *ar +--- systemd-195.orig/src/systemctl/systemctl.c ++++ systemd-195/src/systemctl/systemctl.c +@@ -4678,10 +4678,13 @@ static int parse_argv(int argc, char *ar /* Hmm, so some other init system is * running, we need to forward this * request to it. For now we simply diff --git a/sync-on-shutdown.patch b/sync-on-shutdown.patch index 04537ea9..6443fb48 100644 --- a/sync-on-shutdown.patch +++ b/sync-on-shutdown.patch @@ -14,11 +14,11 @@ disks/read-only remount them anyway before going down. src/core/shutdown.c | 7 +++++++ 2 files changed, 8 insertions(+) -diff --git a/src/core/service.c b/src/core/service.c -index cf08485..df72aba 100644 ---- a/src/core/service.c -+++ b/src/core/service.c -@@ -2485,6 +2485,7 @@ static int service_start_limit_test(Service *s) { +Index: systemd-195/src/core/service.c +=================================================================== +--- systemd-195.orig/src/core/service.c ++++ systemd-195/src/core/service.c +@@ -2526,6 +2526,7 @@ static int service_start_limit_test(Serv case SERVICE_START_LIMIT_REBOOT_IMMEDIATE: log_warning("%s start request repeated too quickly, rebooting immediately.", UNIT(s)->id); @@ -26,10 +26,10 @@ index cf08485..df72aba 100644 reboot(RB_AUTOBOOT); break; -diff --git a/src/core/shutdown.c b/src/core/shutdown.c -index cc8c57b..b59aef1 100644 ---- a/src/core/shutdown.c -+++ b/src/core/shutdown.c +Index: systemd-195/src/core/shutdown.c +=================================================================== +--- systemd-195.orig/src/core/shutdown.c ++++ systemd-195/src/core/shutdown.c @@ -273,6 +273,13 @@ int main(int argc, char *argv[]) { } } @@ -44,6 +44,3 @@ index cc8c57b..b59aef1 100644 if (cmd == LINUX_REBOOT_CMD_KEXEC) { if (!in_container) { --- -1.7.10.4 - diff --git a/systemd-mini.changes b/systemd-mini.changes index 27ae0040..a0a94445 100644 --- a/systemd-mini.changes +++ b/systemd-mini.changes @@ -1,3 +1,28 @@ +------------------------------------------------------------------- +Wed Jan 9 09:43:15 UTC 2013 - rmilasan@suse.com + +- udev: path_id - handle Hyper-V devices + add: 1008-udev-path_id-handle-Hyper-V-devices.patch +- keymap: Update the list of Samsung Series 9 models + add: 1009-keymap-Update-the-list-of-Samsung-Series-9-models.patch +- keymap: Add Samsung 700T + add: 1010-keymap-Add-Samsung-700T.patch +- libudev: avoid leak during realloc failure + add: 1011-libudev-avoid-leak-during-realloc-failure.patch +- libudev: do not resolve $attr{device} symlinks + add: 1012-libudev-do-not-resolve-attr-device-symlinks.patch +- libudev: validate 'udev' argument to udev_enumerate_new() + add: 1013-libudev-validate-udev-argument-to-udev_enumerate_new.patch +- udev: fix whitespace + add: 1014-udev-fix-whitespace.patch +- udev: properly handle symlink removal by 'change' event + add: 1015-udev-properly-handle-symlink-removal-by-change-event.patch +- udev: builtin - do not fail builtin initialization if one of + them returns an error + add: 1016-udev-builtin-do-not-fail-builtin-initialization-if-o.patch +- udev: use usec_t and now() + add: 1017-udev-use-usec_t-and-now.patch + ------------------------------------------------------------------- Tue Jan 8 12:47:43 UTC 2013 - rmilasan@suse.com @@ -12,8 +37,8 @@ Tue Dec 11 00:22:50 UTC 2012 - crrodriguez@opensuse.org - detect-btrfs-ssd.patch: Fix btrfs detection on SSD. - timedated-donot-close-bogus-dbus-connection.patch: Avoid - closing an non-existent dbus connection and getting assertion - failures. + closing an non-existent dbus connection and getting assertion + failures. ------------------------------------------------------------------- Mon Dec 10 14:22:21 UTC 2012 - coolo@suse.com diff --git a/systemd-mini.spec b/systemd-mini.spec index b7be3679..2b491b12 100644 --- a/systemd-mini.spec +++ b/systemd-mini.spec @@ -178,6 +178,26 @@ Patch1005: 1005-udev-fix-sg-autoload-regression.patch Patch1006: 1006-fix-devname-prefix.patch # PATCH-FIX-UPSTREAM 1007-udevd-add-missing-to-getopt_long-e.patch Patch1007: 1007-udevd-add-missing-to-getopt_long-e.patch +# PATCH-FIX-UPSTREAM 1008-udev-path_id-handle-Hyper-V-devices.patch +Patch1008: 1008-udev-path_id-handle-Hyper-V-devices.patch +# PATCH-FIX-UPSTREAM 1009-keymap-Update-the-list-of-Samsung-Series-9-models.patch +Patch1009: 1009-keymap-Update-the-list-of-Samsung-Series-9-models.patch +# PATCH-FIX-UPSTREAM 1010-keymap-Add-Samsung-700T.patch +Patch1010: 1010-keymap-Add-Samsung-700T.patch +# PATCH-FIX-UPSTREAM 1011-libudev-avoid-leak-during-realloc-failure.patch +Patch1011: 1011-libudev-avoid-leak-during-realloc-failure.patch +# PATCH-FIX-UPSTREAM 1012-libudev-do-not-resolve-attr-device-symlinks.patch +Patch1012: 1012-libudev-do-not-resolve-attr-device-symlinks.patch +# PATCH-FIX-UPSTREAM 1013-libudev-validate-udev-argument-to-udev_enumerate_new.patch +Patch1013: 1013-libudev-validate-udev-argument-to-udev_enumerate_new.patch +# PATCH-FIX-UPSTREAM 1014-udev-fix-whitespace.patch +Patch1014: 1014-udev-fix-whitespace.patch +# PATCH-FIX-UPSTREAM 1015-udev-properly-handle-symlink-removal-by-change-event.patch +Patch1015: 1015-udev-properly-handle-symlink-removal-by-change-event.patch +# PATCH-FIX-UPSTREAM 1016-udev-builtin-do-not-fail-builtin-initialization-if-o.patch +Patch1016: 1016-udev-builtin-do-not-fail-builtin-initialization-if-o.patch +# PATCH-FIX-UPSTREAM 1017-udev-use-usec_t-and-now.patch +Patch1017: 1017-udev-use-usec_t-and-now.patch %description Systemd is a system and service manager, compatible with SysV and LSB @@ -345,6 +365,16 @@ cp %{SOURCE7} m4/ %patch1005 -p1 %patch1006 -p1 %patch1007 -p1 +%patch1008 -p1 +%patch1009 -p1 +%patch1010 -p1 +%patch1011 -p1 +%patch1012 -p1 +%patch1013 -p1 +%patch1014 -p1 +%patch1015 -p1 +%patch1016 -p1 +%patch1017 -p1 #systemd %patch1 -p1 diff --git a/systemd-numlock-suse.patch b/systemd-numlock-suse.patch index 2c90cde4..245a4bc3 100644 --- a/systemd-numlock-suse.patch +++ b/systemd-numlock-suse.patch @@ -1,7 +1,7 @@ -Index: systemd-190/src/vconsole/vconsole-setup.c +Index: systemd-195/src/vconsole/vconsole-setup.c =================================================================== ---- systemd-190.orig/src/vconsole/vconsole-setup.c -+++ systemd-190/src/vconsole/vconsole-setup.c +--- systemd-195.orig/src/vconsole/vconsole-setup.c ++++ systemd-195/src/vconsole/vconsole-setup.c @@ -287,12 +287,14 @@ int main(int argc, char **argv) { char *vc_kbd_delay = NULL; char *vc_kbd_rate = NULL; @@ -17,7 +17,7 @@ Index: systemd-190/src/vconsole/vconsole-setup.c int r = EXIT_FAILURE; pid_t font_pid = 0, keymap_pid = 0; -@@ -388,6 +390,37 @@ int main(int argc, char **argv) { +@@ -380,6 +382,37 @@ int main(int argc, char **argv) { vc_keymap = t; } disable_capslock = vc_kbd_disable_caps_lock && strcasecmp(vc_kbd_disable_caps_lock, "YES") == 0; @@ -55,7 +55,7 @@ Index: systemd-190/src/vconsole/vconsole-setup.c #elif defined(TARGET_SUSE) r = parse_env_file("/etc/sysconfig/keyboard", NEWLINE, -@@ -395,6 +428,7 @@ int main(int argc, char **argv) { +@@ -387,6 +420,7 @@ int main(int argc, char **argv) { "KBD_DELAY", &vc_kbd_delay, "KBD_RATE", &vc_kbd_rate, "KBD_DISABLE_CAPS_LOCK", &vc_kbd_disable_caps_lock, @@ -63,7 +63,7 @@ Index: systemd-190/src/vconsole/vconsole-setup.c "COMPOSETABLE", &vc_compose_table, NULL); if (r < 0 && r != -ENOENT) -@@ -565,6 +599,10 @@ int main(int argc, char **argv) { +@@ -557,6 +591,10 @@ int main(int argc, char **argv) { finish: if (keymap_pid > 0) wait_for_terminate_and_warn(KBD_LOADKEYS, keymap_pid); @@ -74,11 +74,11 @@ Index: systemd-190/src/vconsole/vconsole-setup.c #ifdef TARGET_SUSE if (compose_table_pid > 0) -Index: systemd-190/Makefile.am +Index: systemd-195/Makefile.am =================================================================== ---- systemd-190.orig/Makefile.am -+++ systemd-190/Makefile.am -@@ -1989,6 +1989,19 @@ dist_udevrules_DATA += \ +--- systemd-195.orig/Makefile.am ++++ systemd-195/Makefile.am +@@ -2017,6 +2017,19 @@ dist_udevrules_DATA += \ rules/61-accelerometer.rules # ------------------------------------------------------------------------------ @@ -98,11 +98,11 @@ Index: systemd-190/Makefile.am if ENABLE_GUDEV if ENABLE_GTK_DOC SUBDIRS += \ -Index: systemd-190/configure.ac +Index: systemd-195/configure.ac =================================================================== ---- systemd-190.orig/configure.ac -+++ systemd-190/configure.ac -@@ -598,6 +598,13 @@ fi +--- systemd-195.orig/configure.ac ++++ systemd-195/configure.ac +@@ -660,6 +660,13 @@ fi with_distro=`echo ${with_distro} | tr '[[:upper:]]' '[[:lower:]]' ` AC_DEFINE_UNQUOTED(DISTRIBUTION, ["${with_distro}"], [Target Distribution]) @@ -116,10 +116,10 @@ Index: systemd-190/configure.ac # Location of the init scripts as mandated by LSB SYSTEM_SYSVINIT_PATH=/etc/init.d SYSTEM_SYSVRCND_PATH=/etc/rc.d -Index: systemd-190/rules/73-seat-numlock.rules +Index: systemd-195/rules/73-seat-numlock.rules =================================================================== --- /dev/null -+++ systemd-190/rules/73-seat-numlock.rules ++++ systemd-195/rules/73-seat-numlock.rules @@ -0,0 +1,8 @@ +# This file is part of systemd. +# @@ -129,10 +129,10 @@ Index: systemd-190/rules/73-seat-numlock.rules +# (at your option) any later version. + +SUBSYSTEM=="tty", ACTION=="add", KERNEL=="tty[0-9]|tty1[0-2]", TEST=="/run/numlock-on", RUN+="numlock-on $env{DEVNAME}" -Index: systemd-190/src/login/numlock-on.c +Index: systemd-195/src/login/numlock-on.c =================================================================== --- /dev/null -+++ systemd-190/src/login/numlock-on.c ++++ systemd-195/src/login/numlock-on.c @@ -0,0 +1,36 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + @@ -170,10 +170,10 @@ Index: systemd-190/src/login/numlock-on.c + return EX_IOERR; + return execv(args[0], args); +} -Index: systemd-190/units/systemd-vconsole-setup.service.in +Index: systemd-195/units/systemd-vconsole-setup.service.in =================================================================== ---- systemd-190.orig/units/systemd-vconsole-setup.service.in -+++ systemd-190/units/systemd-vconsole-setup.service.in +--- systemd-195.orig/units/systemd-vconsole-setup.service.in ++++ systemd-195/units/systemd-vconsole-setup.service.in @@ -11,7 +11,7 @@ Documentation=man:systemd-vconsole-setup DefaultDependencies=no Conflicts=shutdown.target diff --git a/systemd.changes b/systemd.changes index 3d94cc4f..a5a1a686 100644 --- a/systemd.changes +++ b/systemd.changes @@ -1,3 +1,28 @@ +------------------------------------------------------------------- +Wed Jan 9 09:42:50 UTC 2013 - rmilasan@suse.com + +- udev: path_id - handle Hyper-V devices + add: 1008-udev-path_id-handle-Hyper-V-devices.patch +- keymap: Update the list of Samsung Series 9 models + add: 1009-keymap-Update-the-list-of-Samsung-Series-9-models.patch +- keymap: Add Samsung 700T + add: 1010-keymap-Add-Samsung-700T.patch +- libudev: avoid leak during realloc failure + add: 1011-libudev-avoid-leak-during-realloc-failure.patch +- libudev: do not resolve $attr{device} symlinks + add: 1012-libudev-do-not-resolve-attr-device-symlinks.patch +- libudev: validate 'udev' argument to udev_enumerate_new() + add: 1013-libudev-validate-udev-argument-to-udev_enumerate_new.patch +- udev: fix whitespace + add: 1014-udev-fix-whitespace.patch +- udev: properly handle symlink removal by 'change' event + add: 1015-udev-properly-handle-symlink-removal-by-change-event.patch +- udev: builtin - do not fail builtin initialization if one of + them returns an error + add: 1016-udev-builtin-do-not-fail-builtin-initialization-if-o.patch +- udev: use usec_t and now() + add: 1017-udev-use-usec_t-and-now.patch + ------------------------------------------------------------------- Tue Jan 8 12:47:43 UTC 2013 - rmilasan@suse.com @@ -12,8 +37,8 @@ Tue Dec 11 00:22:50 UTC 2012 - crrodriguez@opensuse.org - detect-btrfs-ssd.patch: Fix btrfs detection on SSD. - timedated-donot-close-bogus-dbus-connection.patch: Avoid - closing an non-existent dbus connection and getting assertion - failures. + closing an non-existent dbus connection and getting assertion + failures. ------------------------------------------------------------------- Mon Dec 10 14:22:21 UTC 2012 - coolo@suse.com diff --git a/systemd.spec b/systemd.spec index 55c77bdb..1e0e3def 100644 --- a/systemd.spec +++ b/systemd.spec @@ -173,6 +173,26 @@ Patch1005: 1005-udev-fix-sg-autoload-regression.patch Patch1006: 1006-fix-devname-prefix.patch # PATCH-FIX-UPSTREAM 1007-udevd-add-missing-to-getopt_long-e.patch Patch1007: 1007-udevd-add-missing-to-getopt_long-e.patch +# PATCH-FIX-UPSTREAM 1008-udev-path_id-handle-Hyper-V-devices.patch +Patch1008: 1008-udev-path_id-handle-Hyper-V-devices.patch +# PATCH-FIX-UPSTREAM 1009-keymap-Update-the-list-of-Samsung-Series-9-models.patch +Patch1009: 1009-keymap-Update-the-list-of-Samsung-Series-9-models.patch +# PATCH-FIX-UPSTREAM 1010-keymap-Add-Samsung-700T.patch +Patch1010: 1010-keymap-Add-Samsung-700T.patch +# PATCH-FIX-UPSTREAM 1011-libudev-avoid-leak-during-realloc-failure.patch +Patch1011: 1011-libudev-avoid-leak-during-realloc-failure.patch +# PATCH-FIX-UPSTREAM 1012-libudev-do-not-resolve-attr-device-symlinks.patch +Patch1012: 1012-libudev-do-not-resolve-attr-device-symlinks.patch +# PATCH-FIX-UPSTREAM 1013-libudev-validate-udev-argument-to-udev_enumerate_new.patch +Patch1013: 1013-libudev-validate-udev-argument-to-udev_enumerate_new.patch +# PATCH-FIX-UPSTREAM 1014-udev-fix-whitespace.patch +Patch1014: 1014-udev-fix-whitespace.patch +# PATCH-FIX-UPSTREAM 1015-udev-properly-handle-symlink-removal-by-change-event.patch +Patch1015: 1015-udev-properly-handle-symlink-removal-by-change-event.patch +# PATCH-FIX-UPSTREAM 1016-udev-builtin-do-not-fail-builtin-initialization-if-o.patch +Patch1016: 1016-udev-builtin-do-not-fail-builtin-initialization-if-o.patch +# PATCH-FIX-UPSTREAM 1017-udev-use-usec_t-and-now.patch +Patch1017: 1017-udev-use-usec_t-and-now.patch %description Systemd is a system and service manager, compatible with SysV and LSB @@ -340,6 +360,16 @@ cp %{SOURCE7} m4/ %patch1005 -p1 %patch1006 -p1 %patch1007 -p1 +%patch1008 -p1 +%patch1009 -p1 +%patch1010 -p1 +%patch1011 -p1 +%patch1012 -p1 +%patch1013 -p1 +%patch1014 -p1 +%patch1015 -p1 +%patch1016 -p1 +%patch1017 -p1 #systemd %patch1 -p1 diff --git a/timedated-donot-close-bogus-dbus-connection.patch b/timedated-donot-close-bogus-dbus-connection.patch index 6ee6f3bc..7757c346 100644 --- a/timedated-donot-close-bogus-dbus-connection.patch +++ b/timedated-donot-close-bogus-dbus-connection.patch @@ -12,11 +12,11 @@ Date: Mon Dec 3 00:50:55 2012 +0000 process 14920: arguments to dbus_connection_unref() were incorrect, assertion "connection != NULL" failed in file ../../dbus/dbus-connection.c line 2776. This is normally a bug in some application using the D-Bus library. -diff --git a/src/timedate/timedated.c b/src/timedate/timedated.c -index 40ba255..784dadc 100644 ---- a/src/timedate/timedated.c -+++ b/src/timedate/timedated.c -@@ -936,7 +936,7 @@ static int connect_bus(DBusConnection **_bus) { +Index: systemd-195/src/timedate/timedated.c +=================================================================== +--- systemd-195.orig/src/timedate/timedated.c ++++ systemd-195/src/timedate/timedated.c +@@ -943,7 +943,7 @@ static int connect_bus(DBusConnection ** if (!bus) { log_error("Failed to get system D-Bus connection: %s", bus_error_message(&error)); r = -ECONNREFUSED; @@ -25,7 +25,7 @@ index 40ba255..784dadc 100644 } dbus_connection_set_exit_on_disconnect(bus, FALSE); -@@ -968,7 +968,7 @@ static int connect_bus(DBusConnection **_bus) { +@@ -975,7 +975,7 @@ static int connect_bus(DBusConnection ** fail: dbus_connection_close(bus); dbus_connection_unref(bus);