summaryrefslogtreecommitdiff
path: root/src/login
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2023-04-28 18:46:36 +0900
committerGitHub <noreply@github.com>2023-04-28 18:46:36 +0900
commit75fd8ad0083cc3542367ee44efa70258c29aecc8 (patch)
treef2df1ae517241c9c5fa561bd9ad691d38b8d1e08 /src/login
parentc63dde809951496a5e9c5a568aadfb9cad95e5e5 (diff)
parent360179ea4621a65e9993782bfe28ac4168a7e254 (diff)
downloadsystemd-75fd8ad0083cc3542367ee44efa70258c29aecc8.tar.gz
Merge pull request #27424 from dtardon/auto-cleanup
More automatic cleanup
Diffstat (limited to 'src/login')
-rw-r--r--src/login/logind-button.c8
-rw-r--r--src/login/logind-button.h2
-rw-r--r--src/login/logind-core.c10
-rw-r--r--src/login/logind-session-dbus.c12
-rw-r--r--src/login/logind-session-device.c8
-rw-r--r--src/login/logind-session-device.h4
-rw-r--r--src/login/logind.c10
7 files changed, 27 insertions, 27 deletions
diff --git a/src/login/logind-button.c b/src/login/logind-button.c
index 727dad0b16..7f95fa7a4f 100644
--- a/src/login/logind-button.c
+++ b/src/login/logind-button.c
@@ -53,8 +53,9 @@ Button* button_new(Manager *m, const char *name) {
return b;
}
-void button_free(Button *b) {
- assert(b);
+Button *button_free(Button *b) {
+ if (!b)
+ return NULL;
hashmap_remove(b->manager->buttons, b->name);
@@ -65,7 +66,8 @@ void button_free(Button *b) {
free(b->name);
free(b->seat);
- free(b);
+
+ return mfree(b);
}
int button_set_seat(Button *b, const char *sn) {
diff --git a/src/login/logind-button.h b/src/login/logind-button.h
index 041d66521c..6c39471fb4 100644
--- a/src/login/logind-button.h
+++ b/src/login/logind-button.h
@@ -20,7 +20,7 @@ struct Button {
};
Button* button_new(Manager *m, const char *name);
-void button_free(Button *b);
+Button *button_free(Button *b);
int button_open(Button *b);
int button_set_seat(Button *b, const char *sn);
int button_check_switches(Button *b);
diff --git a/src/login/logind-core.c b/src/login/logind-core.c
index 8e1c54dbe2..dd4b246893 100644
--- a/src/login/logind-core.c
+++ b/src/login/logind-core.c
@@ -323,15 +323,11 @@ int manager_process_button_device(Manager *m, sd_device *d) {
return r;
if (device_for_action(d, SD_DEVICE_REMOVE) ||
- sd_device_has_current_tag(d, "power-switch") <= 0) {
+ sd_device_has_current_tag(d, "power-switch") <= 0)
- b = hashmap_get(m->buttons, sysname);
- if (!b)
- return 0;
-
- button_free(b);
+ button_free(hashmap_get(m->buttons, sysname));
- } else {
+ else {
const char *sn;
r = manager_add_button(m, sysname, &b);
diff --git a/src/login/logind-session-dbus.c b/src/login/logind-session-dbus.c
index 00a0e8fd58..53a9673133 100644
--- a/src/login/logind-session-dbus.c
+++ b/src/login/logind-session-dbus.c
@@ -460,7 +460,7 @@ static int method_set_tty(sd_bus_message *message, void *userdata, sd_bus_error
static int method_take_device(sd_bus_message *message, void *userdata, sd_bus_error *error) {
Session *s = ASSERT_PTR(userdata);
uint32_t major, minor;
- SessionDevice *sd;
+ _cleanup_(session_device_freep) SessionDevice *sd = NULL;
dev_t dev;
int r;
@@ -492,18 +492,16 @@ static int method_take_device(sd_bus_message *message, void *userdata, sd_bus_er
r = session_device_save(sd);
if (r < 0)
- goto error;
+ return r;
r = sd_bus_reply_method_return(message, "hb", sd->fd, !sd->active);
if (r < 0)
- goto error;
+ return r;
session_save(s);
- return 1;
+ TAKE_PTR(sd);
-error:
- session_device_free(sd);
- return r;
+ return 1;
}
static int method_release_device(sd_bus_message *message, void *userdata, sd_bus_error *error) {
diff --git a/src/login/logind-session-device.c b/src/login/logind-session-device.c
index a8b3b48992..9743cd570c 100644
--- a/src/login/logind-session-device.c
+++ b/src/login/logind-session-device.c
@@ -375,8 +375,9 @@ error:
return r;
}
-void session_device_free(SessionDevice *sd) {
- assert(sd);
+SessionDevice *session_device_free(SessionDevice *sd) {
+ if (!sd)
+ return NULL;
/* Make sure to remove the pushed fd. */
if (sd->pushed_fd)
@@ -391,7 +392,8 @@ void session_device_free(SessionDevice *sd) {
hashmap_remove(sd->session->devices, &sd->dev);
free(sd->node);
- free(sd);
+
+ return mfree(sd);
}
void session_device_complete_pause(SessionDevice *sd) {
diff --git a/src/login/logind-session-device.h b/src/login/logind-session-device.h
index 4da3fe6533..04654d1252 100644
--- a/src/login/logind-session-device.h
+++ b/src/login/logind-session-device.h
@@ -28,7 +28,9 @@ struct SessionDevice {
};
int session_device_new(Session *s, dev_t dev, bool open_device, SessionDevice **out);
-void session_device_free(SessionDevice *sd);
+SessionDevice *session_device_free(SessionDevice *sd);
+DEFINE_TRIVIAL_CLEANUP_FUNC(SessionDevice*, session_device_free);
+
void session_device_complete_pause(SessionDevice *sd);
void session_device_resume_all(Session *s);
diff --git a/src/login/logind.c b/src/login/logind.c
index a0d6cb3a27..cfb3ef500c 100644
--- a/src/login/logind.c
+++ b/src/login/logind.c
@@ -40,11 +40,11 @@
#include "udev-util.h"
#include "user-util.h"
-static Manager* manager_unref(Manager *m);
-DEFINE_TRIVIAL_CLEANUP_FUNC(Manager*, manager_unref);
+static Manager* manager_free(Manager *m);
+DEFINE_TRIVIAL_CLEANUP_FUNC(Manager*, manager_free);
static int manager_new(Manager **ret) {
- _cleanup_(manager_unrefp) Manager *m = NULL;
+ _cleanup_(manager_freep) Manager *m = NULL;
int r;
assert(ret);
@@ -102,7 +102,7 @@ static int manager_new(Manager **ret) {
return 0;
}
-static Manager* manager_unref(Manager *m) {
+static Manager* manager_free(Manager *m) {
Session *session;
User *u;
Device *d;
@@ -1177,7 +1177,7 @@ static int manager_run(Manager *m) {
}
static int run(int argc, char *argv[]) {
- _cleanup_(manager_unrefp) Manager *m = NULL;
+ _cleanup_(manager_freep) Manager *m = NULL;
_unused_ _cleanup_(notify_on_cleanup) const char *notify_message = NULL;
int r;