51 lines
1.6 KiB
Diff
51 lines
1.6 KiB
Diff
From 0c8ecab9e6f5fae5860e7fbc795e988c112edede Mon Sep 17 00:00:00 2001
|
|
From: xiashuang <xiashuang1@huawei.com>
|
|
Date: Thu, 25 Jul 2019 22:38:32 -0400
|
|
Subject: [PATCH] fix fgets will get a redundant new line
|
|
|
|
this patch fix a bug introduced by bugfix-force-irq-into-rebalance-list-when-irq-removed-and-reinserted.patch.
|
|
the previous patch use fgets to get a directory name from buffer. but fgets will get a redundant newline,
|
|
so the directory name are always invalid, this patch just remove the '\n'.
|
|
---
|
|
classify.c | 8 ++++++--
|
|
1 file changed, 6 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/classify.c b/classify.c
|
|
index e61c39b..440576f 100644
|
|
--- a/classify.c
|
|
+++ b/classify.c
|
|
@@ -747,6 +747,7 @@ void find_irq_dev_path(int irq, char *dirname, int length)
|
|
char path[PATH_MAX];
|
|
char buffer[128];
|
|
char *brc = NULL;
|
|
+ size_t dirlen;
|
|
|
|
memset(dirname, 0, length);
|
|
/* Return defaults if irq is 0 */
|
|
@@ -762,8 +763,10 @@ void find_irq_dev_path(int irq, char *dirname, int length)
|
|
}
|
|
|
|
brc = fgets(buffer, 128, output);
|
|
- if (brc) {
|
|
+ /* fgets will get a redundant \n */
|
|
+ if (brc && (dirlen = strcspn(brc, "\n")) > 0) {
|
|
log(TO_CONSOLE, LOG_INFO, "msi_irqs IRQ %d dirname is %s\n", irq, brc);
|
|
+ brc[dirlen] = '\0';
|
|
strncpy(dirname, brc, length);
|
|
pclose(output);
|
|
return;
|
|
@@ -779,8 +782,9 @@ void find_irq_dev_path(int irq, char *dirname, int length)
|
|
}
|
|
|
|
brc = fgets(buffer, 128, output);
|
|
- if (brc) {
|
|
+ if (brc && (dirlen = strcspn(brc, "\n")) > 0) {
|
|
log(TO_CONSOLE, LOG_INFO, "IRQ %d dirname is %s\n", irq, brc);
|
|
+ brc[dirlen] = '\0';
|
|
strncpy(dirname, brc, length);
|
|
pclose(output);
|
|
return;
|
|
--
|
|
1.8.3.1
|
|
|