diff options
-rw-r--r-- | hwdb/70-mouse.hwdb | 12 | ||||
-rw-r--r-- | src/boot/bootctl.c | 2 | ||||
-rw-r--r-- | src/core/main.c | 4 | ||||
-rw-r--r-- | src/gpt-auto-generator/gpt-auto-generator.c | 188 | ||||
-rw-r--r-- | src/import/pull-tar.c | 8 | ||||
-rw-r--r-- | src/libsystemd-network/sd-dhcp-lease.c | 6 | ||||
-rw-r--r-- | src/libsystemd/sd-bus/bus-message.c | 4 | ||||
-rw-r--r-- | src/libsystemd/sd-netlink/netlink-message.c | 2 | ||||
-rw-r--r-- | src/systemctl/systemctl.c | 1 | ||||
-rw-r--r-- | src/udev/udev-builtin-blkid.c | 5 | ||||
-rw-r--r-- | src/udev/udev-ctrl.c | 3 |
11 files changed, 129 insertions, 106 deletions
diff --git a/hwdb/70-mouse.hwdb b/hwdb/70-mouse.hwdb index 7373be4778..1451fc02cc 100644 --- a/hwdb/70-mouse.hwdb +++ b/hwdb/70-mouse.hwdb @@ -171,6 +171,8 @@ mouse:usb:v17efp6044:name:ThinkPad USB Laser Mouse: # Logitech M-BJ58 Optical Mouse mouse:usb:v046dpc00e:name:Logitech USB-PS/2 Optical Mouse: +# Logitech Mini Optical Mouse +mouse:usb:v046dpc016:name:Logitech Optical USB Mouse: # Logitech MX310 Optical Mouse mouse:usb:v046dpc01b:name:Logitech USB-PS/2 Optical Mouse: # Logitech USB-PS/2 M-BT58 @@ -219,6 +221,8 @@ mouse:usb:v046dpc52b:name:Logitech Unifying Device. Wireless PID:4008: # Logitech M705 (marathon mouse) mouse:usb:v046dp101b:name:Logitech M705: mouse:usb:v046dpc52b:name:Logitech Unifying Device. Wireless PID:101b: +# Logitech Performance MX +mouse:usb:v046dp101a:name:Logitech Performance MX: MOUSE_DPI=800@166 # Logitech MX Revolution @@ -300,6 +304,10 @@ mouse:usb:v046dpc068:name:Logitech G500: mouse:bluetooth:v046dpb00d:name:Ultrathin Touch Mouse: MOUSE_DPI=1000@1000 +# ImPS/2 Logitech Wheel Mouse +mouse:ps2:*:name:ImPS/2 Logitech Wheel Mouse: + MOUSE_DPI=400@100 + # ImExPS/2 Logitech Wheel Mouse mouse:ps2:*:name:ImExPS/2 Logitech Wheel Mouse: MOUSE_DPI=400@250 @@ -314,6 +322,10 @@ mouse:usb:v045ep0040:name:Microsoft Microsoft 3-Button Mouse with IntelliEye(TM) # Note: unsure that these work, it's likely that all devices on these # receivers show up with the same vid/pid/name +# Microsoft Wireless Mouse 5000 +mouse:usb:v045ep0745:name:Microsoft Microsoft® 2.4GHz Transceiver v6.0: + MOUSE_DPI=800@142 + # Microsoft Sculpt Ergonomic Mouse mouse:usb:v045ep07a5:name:Microsoft Microsoft® 2.4GHz Transceiver v9.0: MOUSE_DPI=1000@142 diff --git a/src/boot/bootctl.c b/src/boot/bootctl.c index 359fde9998..ac1711b318 100644 --- a/src/boot/bootctl.c +++ b/src/boot/bootctl.c @@ -818,7 +818,7 @@ static int remove_boot_efi(const char *esp_path) { if (r < 0) return log_error_errno(errno, "Failed to remove \"%s/%s\": %m", p, de->d_name); - log_info("Removed \"%s/\%s\".", p, de->d_name); + log_info("Removed \"%s/%s\".", p, de->d_name); } c++; diff --git a/src/core/main.c b/src/core/main.c index a66fb18418..87b97aa883 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -1785,7 +1785,7 @@ int main(int argc, char *argv[]) { case MANAGER_REEXECUTE: if (prepare_reexecute(m, &arg_serialization, &fds, false) < 0) { - error_message = "Failed to prepare for reexection"; + error_message = "Failed to prepare for reexecution"; goto finish; } @@ -1801,7 +1801,7 @@ int main(int argc, char *argv[]) { if (!switch_root_init) if (prepare_reexecute(m, &arg_serialization, &fds, true) < 0) { - error_message = "Failed to prepare for reexection"; + error_message = "Failed to prepare for reexecution"; goto finish; } diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c index 9d889c17d8..0a34f86be7 100644 --- a/src/gpt-auto-generator/gpt-auto-generator.c +++ b/src/gpt-auto-generator/gpt-auto-generator.c @@ -240,82 +240,6 @@ static int add_mount( return 0; } -static int add_automount( - const char *id, - const char *what, - const char *where, - const char *fstype, - bool rw, - const char *options, - const char *description, - usec_t timeout) { - - _cleanup_free_ char *unit = NULL, *lnk = NULL; - _cleanup_free_ char *opt, *p = NULL; - _cleanup_fclose_ FILE *f = NULL; - int r; - - assert(id); - assert(where); - assert(description); - - if (options) - opt = strjoin(options, ",noauto", NULL); - else - opt = strdup("noauto"); - if (!opt) - return log_oom(); - - r = add_mount(id, - what, - where, - fstype, - rw, - opt, - description, - NULL); - if (r < 0) - return r; - - r = unit_name_from_path(where, ".automount", &unit); - if (r < 0) - return log_error_errno(r, "Failed to generate unit name: %m"); - - p = strjoin(arg_dest, "/", unit, NULL); - if (!p) - return log_oom(); - - f = fopen(p, "wxe"); - if (!f) - return log_error_errno(errno, "Failed to create unit file %s: %m", unit); - - fprintf(f, - "# Automatically generated by systemd-gpt-auto-generator\n\n" - "[Unit]\n" - "Description=%s\n" - "Documentation=man:systemd-gpt-auto-generator(8)\n" - "[Automount]\n" - "Where=%s\n" - "TimeoutIdleSec=%lld\n", - description, - where, - (unsigned long long)timeout / USEC_PER_SEC); - - r = fflush_and_check(f); - if (r < 0) - return log_error_errno(r, "Failed to write unit file %s: %m", p); - - lnk = strjoin(arg_dest, "/" SPECIAL_LOCAL_FS_TARGET ".wants/", unit, NULL); - if (!lnk) - return log_oom(); - mkdir_parents_label(lnk, 0755); - - if (symlink(p, lnk) < 0) - return log_error_errno(errno, "Failed to create symlink %s: %m", lnk); - - return 0; -} - static bool path_is_busy(const char *where) { int r; @@ -441,8 +365,84 @@ static int add_swap(const char *path) { return 0; } -static int add_boot(const char *what) { #ifdef ENABLE_EFI +static int add_automount( + const char *id, + const char *what, + const char *where, + const char *fstype, + bool rw, + const char *options, + const char *description, + usec_t timeout) { + + _cleanup_free_ char *unit = NULL, *lnk = NULL; + _cleanup_free_ char *opt, *p = NULL; + _cleanup_fclose_ FILE *f = NULL; + int r; + + assert(id); + assert(where); + assert(description); + + if (options) + opt = strjoin(options, ",noauto", NULL); + else + opt = strdup("noauto"); + if (!opt) + return log_oom(); + + r = add_mount(id, + what, + where, + fstype, + rw, + opt, + description, + NULL); + if (r < 0) + return r; + + r = unit_name_from_path(where, ".automount", &unit); + if (r < 0) + return log_error_errno(r, "Failed to generate unit name: %m"); + + p = strjoin(arg_dest, "/", unit, NULL); + if (!p) + return log_oom(); + + f = fopen(p, "wxe"); + if (!f) + return log_error_errno(errno, "Failed to create unit file %s: %m", unit); + + fprintf(f, + "# Automatically generated by systemd-gpt-auto-generator\n\n" + "[Unit]\n" + "Description=%s\n" + "Documentation=man:systemd-gpt-auto-generator(8)\n" + "[Automount]\n" + "Where=%s\n" + "TimeoutIdleSec=%lld\n", + description, + where, + (unsigned long long)timeout / USEC_PER_SEC); + + r = fflush_and_check(f); + if (r < 0) + return log_error_errno(r, "Failed to write unit file %s: %m", p); + + lnk = strjoin(arg_dest, "/" SPECIAL_LOCAL_FS_TARGET ".wants/", unit, NULL); + if (!lnk) + return log_oom(); + mkdir_parents_label(lnk, 0755); + + if (symlink(p, lnk) < 0) + return log_error_errno(errno, "Failed to create symlink %s: %m", lnk); + + return 0; +} + +static int add_boot(const char *what) { _cleanup_blkid_free_probe_ blkid_probe b = NULL; const char *fstype = NULL, *uuid = NULL; sd_id128_t id, type_id; @@ -532,10 +532,12 @@ static int add_boot(const char *what) { 120 * USEC_PER_SEC); return r; +} #else +static int add_boot(const char *what) { return 0; -#endif } +#endif static int enumerate_partitions(dev_t devnum) { @@ -616,9 +618,12 @@ static int enumerate_partitions(dev_t devnum) { errno = 0; r = blkid_do_safeprobe(b); - if (r == -2 || r == 1) /* no result or uncertain */ + if (r == 1) + return 0; /* no results */ + else if (r == -2) { + log_warning("%s: probe gave ambiguous results, ignoring", node); return 0; - else if (r != 0) + } else if (r != 0) return log_error_errno(errno ?: EIO, "%s: failed to probe: %m", node); errno = 0; @@ -666,7 +671,6 @@ static int enumerate_partitions(dev_t devnum) { blkid_partition pp; dev_t qn; int nr; - unsigned long long flags; q = udev_device_new_from_syspath(udev, udev_list_entry_get_name(item)); if (!q) @@ -690,13 +694,6 @@ static int enumerate_partitions(dev_t devnum) { if (!pp) continue; - flags = blkid_partition_get_flags(pp); - - /* Ignore partitions that are not marked for automatic - * mounting on discovery */ - if (flags & GPT_FLAG_NO_AUTO) - continue; - nr = blkid_partition_get_partno(pp); if (nr < 0) continue; @@ -709,6 +706,11 @@ static int enumerate_partitions(dev_t devnum) { continue; if (sd_id128_equal(type_id, GPT_SWAP)) { + unsigned long long flags; + + flags = blkid_partition_get_flags(pp); + if (flags & GPT_FLAG_NO_AUTO) + continue; if (flags & GPT_FLAG_READ_ONLY) { log_debug("%s marked as read-only swap partition, which is bogus. Ignoring.", subnode); @@ -732,6 +734,11 @@ static int enumerate_partitions(dev_t devnum) { return log_oom(); } else if (sd_id128_equal(type_id, GPT_HOME)) { + unsigned long long flags; + + flags = blkid_partition_get_flags(pp); + if (flags & GPT_FLAG_NO_AUTO) + continue; /* We only care for the first /home partition */ if (home && nr >= home_nr) @@ -745,6 +752,11 @@ static int enumerate_partitions(dev_t devnum) { return log_oom(); } else if (sd_id128_equal(type_id, GPT_SRV)) { + unsigned long long flags; + + flags = blkid_partition_get_flags(pp); + if (flags & GPT_FLAG_NO_AUTO) + continue; /* We only care for the first /srv partition */ if (srv && nr >= srv_nr) diff --git a/src/import/pull-tar.c b/src/import/pull-tar.c index a6605d248f..71b8908a58 100644 --- a/src/import/pull-tar.c +++ b/src/import/pull-tar.c @@ -127,13 +127,7 @@ int tar_pull_new( i->grow_machine_directory = path_startswith(i->image_root, "/var/lib/machines"); - if (event) - i->event = sd_event_ref(event); - else { - r = sd_event_default(&i->event); - if (r < 0) - return r; - } + i->event = sd_event_ref(event); r = curl_glue_new(&i->glue, i->event); if (r < 0) diff --git a/src/libsystemd-network/sd-dhcp-lease.c b/src/libsystemd-network/sd-dhcp-lease.c index e0874aebad..f5b9e22589 100644 --- a/src/libsystemd-network/sd-dhcp-lease.c +++ b/src/libsystemd-network/sd-dhcp-lease.c @@ -954,7 +954,7 @@ int sd_dhcp_lease_load(sd_dhcp_lease **ret, const char *lease_file) { } for (i = 0; i <= DHCP_OPTION_PRIVATE_LAST - DHCP_OPTION_PRIVATE_BASE; i++) { - uint8_t *data; + _cleanup_free_ uint8_t *data = NULL; size_t len; if (!options[i]) @@ -965,10 +965,8 @@ int sd_dhcp_lease_load(sd_dhcp_lease **ret, const char *lease_file) { return r; r = dhcp_lease_insert_private_option(lease, DHCP_OPTION_PRIVATE_BASE + i, data, len); - if (r < 0) { - free(data); + if (r < 0) return r; - } } *ret = lease; diff --git a/src/libsystemd/sd-bus/bus-message.c b/src/libsystemd/sd-bus/bus-message.c index 006e4a2b58..94427ed664 100644 --- a/src/libsystemd/sd-bus/bus-message.c +++ b/src/libsystemd/sd-bus/bus-message.c @@ -608,8 +608,8 @@ static sd_bus_message *message_new(sd_bus *bus, uint8_t type) { m->header = (struct bus_header*) ((uint8_t*) m + ALIGN(sizeof(struct sd_bus_message))); m->header->endian = BUS_NATIVE_ENDIAN; m->header->type = type; - m->header->version = bus ? bus->message_version : 1; - m->allow_fds = !bus || bus->can_fds || (bus->state != BUS_HELLO && bus->state != BUS_RUNNING); + m->header->version = bus->message_version; + m->allow_fds = bus->can_fds || (bus->state != BUS_HELLO && bus->state != BUS_RUNNING); m->root_container.need_offsets = BUS_MESSAGE_IS_GVARIANT(m); m->bus = sd_bus_ref(bus); diff --git a/src/libsystemd/sd-netlink/netlink-message.c b/src/libsystemd/sd-netlink/netlink-message.c index 3ba62a6be9..aee2ced2d9 100644 --- a/src/libsystemd/sd-netlink/netlink-message.c +++ b/src/libsystemd/sd-netlink/netlink-message.c @@ -501,7 +501,7 @@ static int netlink_message_read_internal(sd_netlink_message *m, unsigned short t assert_return(m, -EINVAL); assert_return(m->sealed, -EPERM); assert_return(data, -EINVAL); - assert(m->n_containers <= RTNL_CONTAINER_DEPTH); + assert(m->n_containers < RTNL_CONTAINER_DEPTH); assert(m->containers[m->n_containers].attributes); assert(type < m->containers[m->n_containers].n_attributes); diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 4e850ea1cf..1a9dbadbe1 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -7292,6 +7292,7 @@ static int halt_now(enum action a) { reboot(RB_POWER_OFF); return -errno; + case ACTION_KEXEC: case ACTION_REBOOT: { _cleanup_free_ char *param = NULL; diff --git a/src/udev/udev-builtin-blkid.c b/src/udev/udev-builtin-blkid.c index 1dad4476f3..b8066ea6e9 100644 --- a/src/udev/udev-builtin-blkid.c +++ b/src/udev/udev-builtin-blkid.c @@ -143,6 +143,11 @@ static int find_gpt_root(struct udev_device *dev, blkid_probe pr, bool test) { if (sd_id128_equal(type, GPT_ESP)) { sd_id128_t id, esp; + unsigned long long flags; + + flags = blkid_partition_get_flags(pp); + if (flags & GPT_FLAG_NO_AUTO) + continue; /* We found an ESP, let's see if it matches * the ESP we booted from. */ diff --git a/src/udev/udev-ctrl.c b/src/udev/udev-ctrl.c index b0ad277f73..b4ae0944eb 100644 --- a/src/udev/udev-ctrl.c +++ b/src/udev/udev-ctrl.c @@ -379,13 +379,14 @@ struct udev_ctrl_msg *udev_ctrl_receive_msg(struct udev_ctrl_connection *conn) { cmsg_close_all(&smsg); cmsg = CMSG_FIRSTHDR(&smsg); - cred = (struct ucred *) CMSG_DATA(cmsg); if (cmsg == NULL || cmsg->cmsg_type != SCM_CREDENTIALS) { log_error("no sender credentials received, message ignored"); goto err; } + cred = (struct ucred *) CMSG_DATA(cmsg); + if (cred->uid != 0) { log_error("sender uid="UID_FMT", message ignored", cred->uid); goto err; |