irqbalance/0031-use-g_malloc-and-friends.patch
Tao Liu 6e2f297d49 Rebase to upstream commit (b4b6f194da)
Resolves: RHEL-58318

Signed-off-by: Tao Liu <ltao@redhat.com>
2024-11-07 10:03:21 +13:00

315 lines
8.9 KiB
Diff

From a7cfbeb0a6609dd56507c129ea2163816c4a4a5f Mon Sep 17 00:00:00 2001
From: Rosen Penev <rosenp@gmail.com>
Date: Sun, 30 Jun 2024 16:49:20 -0700
Subject: [PATCH 31/44] use g_malloc and friends
These should not fail. There are no null checks.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
irqbalance.c | 4 ++--
ui/helpers.c | 6 ++---
ui/irqbalance-ui.c | 57 ++++++++++++++++++++--------------------------
ui/ui.c | 17 +++++++-------
4 files changed, 38 insertions(+), 46 deletions(-)
diff --git a/irqbalance.c b/irqbalance.c
index dfd5d2d..3875d5d 100644
--- a/irqbalance.c
+++ b/irqbalance.c
@@ -409,7 +409,7 @@ gboolean sock_handle(gint fd, GIOCondition condition, gpointer user_data __attri
struct msghdr msg = {
.msg_iov = &iov,
.msg_iovlen = 1,
- .msg_control = malloc(CMSG_SPACE(sizeof(struct ucred))),
+ .msg_control = g_malloc(CMSG_SPACE(sizeof(struct ucred))),
.msg_controllen = CMSG_SPACE(sizeof(struct ucred)),
};
@@ -540,7 +540,7 @@ out_close:
}
out:
- free(msg.msg_control);
+ g_free(msg.msg_control);
return TRUE;
}
diff --git a/ui/helpers.c b/ui/helpers.c
index 3b4c51f..529b1b3 100644
--- a/ui/helpers.c
+++ b/ui/helpers.c
@@ -73,7 +73,7 @@ char * hex_to_bitmap(char hex_digit) {
return "0000\0";
}
- char *bitmap = malloc(5 * sizeof(char));
+ char *bitmap = g_malloc_n(5, sizeof(char));
bitmap[4] = '\0';
int i;
for(i = 3; i >= 0; i--) {
@@ -86,7 +86,7 @@ char * hex_to_bitmap(char hex_digit) {
gpointer copy_cpu_ban(gconstpointer src, gpointer data __attribute__((unused)))
{
cpu_ban_t *old = (cpu_ban_t *)src;
- cpu_ban_t *new = malloc(sizeof(cpu_ban_t));
+ cpu_ban_t *new = g_malloc(sizeof(cpu_ban_t));
new->number = old->number;
new->is_banned = old->is_banned;
new->is_changed = 0;
@@ -96,7 +96,7 @@ gpointer copy_cpu_ban(gconstpointer src, gpointer data __attribute__((unused)))
gpointer copy_irq(gconstpointer src, gpointer data __attribute__((unused)))
{
irq_t *old = (irq_t *)src;
- irq_t *new = malloc(sizeof(irq_t));
+ irq_t *new = g_malloc(sizeof(irq_t));
new->vector = old->vector;
new->load = old->load;
new->diff = old->diff;
diff --git a/ui/irqbalance-ui.c b/ui/irqbalance-ui.c
index 2e6b7d3..9bb76fd 100644
--- a/ui/irqbalance-ui.c
+++ b/ui/irqbalance-ui.c
@@ -30,15 +30,14 @@ static int default_bufsz = 8192;
struct msghdr * create_credentials_msg(void)
{
- struct ucred *credentials = malloc(sizeof(struct ucred));
+ struct ucred *credentials = g_malloc(sizeof(struct ucred));
credentials->pid = getpid();
credentials->uid = geteuid();
credentials->gid = getegid();
- struct msghdr *msg = malloc(sizeof(struct msghdr));
- memset(msg, 0, sizeof(struct msghdr));
+ struct msghdr *msg = g_malloc0(sizeof(struct msghdr));
msg->msg_iovlen = 1;
- msg->msg_control = malloc(CMSG_SPACE(sizeof(struct ucred)));
+ msg->msg_control = g_malloc(CMSG_SPACE(sizeof(struct ucred)));
msg->msg_controllen = CMSG_SPACE(sizeof(struct ucred));
struct cmsghdr *cmsg = CMSG_FIRSTHDR(msg);
@@ -47,7 +46,7 @@ struct msghdr * create_credentials_msg(void)
cmsg->cmsg_len = CMSG_LEN(sizeof(struct ucred));
memcpy(CMSG_DATA(cmsg), credentials, sizeof(struct ucred));
- free(credentials);
+ g_free(credentials);
return msg;
}
@@ -100,8 +99,8 @@ void send_settings(char *data)
sendmsg(socket_fd, msg, 0);
close(socket_fd);
- free(msg->msg_control);
- free(msg);
+ g_free(msg->msg_control);
+ g_free(msg);
}
char * get_data(char *string)
@@ -125,20 +124,20 @@ try_again:
msg->msg_iov = &iov;
sendmsg(socket_fd, msg, 0);
- char *data = malloc(default_bufsz);
+ char *data = g_malloc(default_bufsz);
int len = recv(socket_fd, data, default_bufsz, MSG_TRUNC);
close(socket_fd);
- free(msg->msg_control);
- free(msg);
+ g_free(msg->msg_control);
+ g_free(msg);
if (len < 0) {
- free(data);
+ g_free(data);
return NULL;
}
data[len] = '\0';
if (len >= default_bufsz) {
/* msg was truncated, increase bufsz and try again */
default_bufsz += 8192;
- free(data);
+ g_free(data);
goto try_again;
}
return data;
@@ -163,7 +162,7 @@ void parse_setup(char *setup_data)
token = strtok_r(NULL, " ", &ptr);
/* Parse banned IRQ data */
while(!strncmp(token, "IRQ", strlen("IRQ"))) {
- new_irq = malloc(sizeof(irq_t));
+ new_irq = g_malloc(sizeof(irq_t));
new_irq->vector = strtol(strtok_r(NULL, " ", &ptr), NULL, 10);
token = strtok_r(NULL, " ", &ptr);
if(strncmp(token, "LOAD", strlen("LOAD")) != 0) goto out;
@@ -189,26 +188,24 @@ void parse_setup(char *setup_data)
char *map = hex_to_bitmap(token[i]);
for(j = 3; j >= 0; j--) {
if(map[j] == '1') {
- uint64_t *banned_cpu = malloc(sizeof(uint64_t));
+ uint64_t *banned_cpu = g_malloc(sizeof(uint64_t));
*banned_cpu = cpu;
setup.banned_cpus = g_list_append(setup.banned_cpus,
banned_cpu);
}
cpu++;
}
- free(map);
+ g_free(map);
}
- free(copy);
+ g_free(copy);
return;
out: {
/* Invalid data presented */
printf("Invalid data sent. Unexpected token: %s", token);
- if (new_irq) {
- free(new_irq);
- }
- free(copy);
+ g_free(new_irq);
+ g_free(copy);
g_list_free(tree);
exit(1);
}
@@ -252,7 +249,7 @@ void assign_cpu_lists(cpu_node_t *node, void *data __attribute__((unused)))
void assign_cpu_mask(cpu_node_t *node, void *data __attribute__((unused)))
{
- char *mask = malloc(16 * sizeof(char));
+ char *mask = g_malloc_n(16, sizeof(char));
mask[0] = '\0';
unsigned int sum = 0;
GList *list_entry = g_list_first(node->cpu_list);
@@ -281,7 +278,7 @@ void parse_into_tree(char *data)
if (!data || strlen(data) == 0)
return;
- copy = strdup(data);
+ copy = g_strdup(data);
if (!copy)
return;
@@ -289,8 +286,8 @@ void parse_into_tree(char *data)
while(token != NULL) {
/* Parse node data */
if(strncmp(token, "TYPE", strlen("TYPE")) != 0) {
- free(copy);
- goto out;
+ g_free(copy);
+ goto out;
}
new = g_malloc0(sizeof(cpu_node_t));
new->type = strtol(strtok_r(NULL, " ", &ptr), NULL, 10);
@@ -312,7 +309,7 @@ void parse_into_tree(char *data)
/* Parse assigned IRQ data */
while((token != NULL) && (!strncmp(token, "IRQ", strlen("IRQ")))) {
- new_irq = malloc(sizeof(irq_t));
+ new_irq = g_malloc(sizeof(irq_t));
new_irq->vector = strtol(strtok_r(NULL, " ", &ptr), NULL, 10);
token = strtok_r(NULL, " ", &ptr);
if(strncmp(token, "LOAD", strlen("LOAD")) != 0) goto out;
@@ -343,7 +340,7 @@ void parse_into_tree(char *data)
new = NULL;
}
- free(copy);
+ g_free(copy);
for_each_node(tree, assign_cpu_lists, NULL);
for_each_node(tree, assign_cpu_mask, NULL);
return;
@@ -351,12 +348,8 @@ void parse_into_tree(char *data)
out: {
/* Invalid data presented */
printf("Invalid data sent. Unexpected token: %s\n", token);
- if (new_irq) {
- free(new_irq);
- }
- if (new) {
- free(new);
- }
+ g_free(new_irq);
+ g_free(new);
g_list_free(tree);
exit(1);
}
diff --git a/ui/ui.c b/ui/ui.c
index 5401d02..be5df5e 100644
--- a/ui/ui.c
+++ b/ui/ui.c
@@ -51,7 +51,7 @@ void show_footer(void)
char * check_control_in_sleep_input(int max_len, int column_offest, int line_offset)
{
- char *input_to = malloc(max_len * sizeof(char));
+ char *input_to = g_malloc_n(max_len, sizeof(char));
int iteration = 0;
while(iteration < max_len) {
int new = getch();
@@ -76,7 +76,7 @@ char * check_control_in_sleep_input(int max_len, int column_offest, int line_off
attrset(COLOR_PAIR(5) | A_REVERSE | A_BOLD);
break;
case 27:
- free(input_to);
+ g_free(input_to);
return NULL;
default:
input_to[iteration] = new;
@@ -112,7 +112,7 @@ int get_valid_sleep_input(int column_offest)
char *error;
new_sleep = strtol(input, &error, 10);
if((*error == '\0') && (new_sleep >= 1)) {
- free(input);
+ g_free(input);
break;
}
new_sleep = setup.sleep;
@@ -121,7 +121,7 @@ int get_valid_sleep_input(int column_offest)
"Invalid input: %s ",
input);
refresh();
- free(input);
+ g_free(input);
}
attrset(COLOR_PAIR(1));
@@ -132,7 +132,7 @@ int get_valid_sleep_input(int column_offest)
void get_banned_cpu(int *cpu, char *data __attribute__((unused)))
{
- cpu_ban_t *new = malloc(sizeof(cpu_ban_t));
+ cpu_ban_t *new = g_malloc(sizeof(cpu_ban_t));
new->number = *cpu;
new->is_banned = 1;
all_cpus = g_list_append(all_cpus, new);
@@ -237,7 +237,7 @@ void get_new_cpu_ban_values(cpu_ban_t *cpu, void *data)
void get_cpu(cpu_node_t *node, void *data __attribute__((unused)))
{
if(node->type == OBJ_TYPE_CPU) {
- cpu_ban_t *new = malloc(sizeof(cpu_ban_t));
+ cpu_ban_t *new = g_malloc(sizeof(cpu_ban_t));
new->number = node->number;
new->is_banned = 0;
all_cpus = g_list_append(all_cpus, new);
@@ -402,10 +402,9 @@ void get_irq_name(int end)
char buffer[128];
if (irq_name == NULL) {
- irq_name = malloc(sizeof(char *) * LINES);
+ irq_name = g_malloc_n(LINES, sizeof(char *));
for (i = 4; i < LINES; i++) {
- irq_name[i] = malloc(sizeof(char) * 50);
- memset(irq_name[i], 0, sizeof(char) * 50);
+ irq_name[i] = g_malloc0_n(50, sizeof(char));
}
}
--
2.47.0