From afad179aaec9c18ef50881955005903e8fb4f340 Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Fri, 12 May 2023 20:27:48 +0200 Subject: [PATCH] dahdi-linux: add multiple patch fixing compilation warning Add multiple patch fixing compilation warning and obvius code bug. Signed-off-by: Christian Marangi --- ...0-dahdi-use-fallthrough-where-needed.patch | 127 ++++++++++++++++++ ...-fix-always-true-compilation-warning.patch | 60 +++++++++ ...han-fix-bug-if-clause-does-not-guard.patch | 28 ++++ ...x-missing-break-in-t13x_set_linemode.patch | 23 ++++ ...204-dahdi-skip-checking-on-releasing.patch | 38 ++++++ .../205-dahdi-xpp-fix-wrong-printf-to-d.patch | 44 ++++++ 6 files changed, 320 insertions(+) create mode 100644 libs/dahdi-linux/patches/200-dahdi-use-fallthrough-where-needed.patch create mode 100644 libs/dahdi-linux/patches/201-dahdi-fix-always-true-compilation-warning.patch create mode 100644 libs/dahdi-linux/patches/202-dahdi-sysfs-chan-fix-bug-if-clause-does-not-guard.patch create mode 100644 libs/dahdi-linux/patches/203-wcte13xp-fix-missing-break-in-t13x_set_linemode.patch create mode 100644 libs/dahdi-linux/patches/204-dahdi-skip-checking-on-releasing.patch create mode 100644 libs/dahdi-linux/patches/205-dahdi-xpp-fix-wrong-printf-to-d.patch diff --git a/libs/dahdi-linux/patches/200-dahdi-use-fallthrough-where-needed.patch b/libs/dahdi-linux/patches/200-dahdi-use-fallthrough-where-needed.patch new file mode 100644 index 0000000..f254659 --- /dev/null +++ b/libs/dahdi-linux/patches/200-dahdi-use-fallthrough-where-needed.patch @@ -0,0 +1,127 @@ +From f9bc391e1cd830c830b3b4fb5fd46a59b41de373 Mon Sep 17 00:00:00 2001 +From: Christian Marangi +Date: Fri, 12 May 2023 20:18:13 +0200 +Subject: [PATCH 1/6] dahdi: use fallthrough where needed + +Use fallthrough instead of comment to fix compilation warning. + +Signed-off-by: Christian Marangi +--- + drivers/dahdi/dahdi-base.c | 14 +++++++------- + drivers/dahdi/wcaxx-base.c | 2 ++ + drivers/dahdi/wctdm24xxp/base.c | 2 ++ + drivers/dahdi/xpp/card_global.c | 2 +- + 4 files changed, 12 insertions(+), 8 deletions(-) + +--- a/drivers/dahdi/dahdi-base.c ++++ b/drivers/dahdi/dahdi-base.c +@@ -7921,7 +7921,7 @@ static inline void __dahdi_process_getau + memset(getlin, 0, DAHDI_CHUNKSIZE * sizeof(short)); + txb[0] = DAHDI_LIN2X(0, ms); + memset(txb + 1, txb[0], DAHDI_CHUNKSIZE - 1); +- /* fall through to normal conf mode */ ++ fallthrough; + case DAHDI_CONF_CONF: /* Normal conference mode */ + if (is_pseudo_chan(ms)) /* if pseudo-channel */ + { +@@ -7945,7 +7945,7 @@ static inline void __dahdi_process_getau + memset(txb + 1, txb[0], DAHDI_CHUNKSIZE - 1); + break; + } +- /* fall through */ ++ fallthrough; + case DAHDI_CONF_CONFMON: /* Conference monitor mode */ + if (ms->confmode & DAHDI_CONF_LISTENER) { + /* Subtract out last sample written to conf */ +@@ -8484,7 +8484,7 @@ static void __dahdi_hooksig_pvt(struct d + break; + } + #endif +- /* fall through intentionally */ ++ fallthrough; + case DAHDI_SIG_FXSGS: /* FXS Groundstart */ + if (rxsig == DAHDI_RXSIG_ONHOOK) { + chan->ringdebtimer = RING_DEBOUNCE_TIME; +@@ -8503,7 +8503,7 @@ static void __dahdi_hooksig_pvt(struct d + chan->gotgs = 1; + } + } +- /* fall through intentionally */ ++ fallthrough; + case DAHDI_SIG_FXOLS: /* FXO Loopstart */ + case DAHDI_SIG_FXOKS: /* FXO Kewlstart */ + switch(rxsig) { +@@ -8603,7 +8603,7 @@ void dahdi_rbsbits(struct dahdi_chan *ch + __dahdi_hooksig_pvt(chan, DAHDI_RXSIG_START); + break; + } +- /* Fall through */ ++ fallthrough; + case DAHDI_SIG_EM_E1: + case DAHDI_SIG_FXOLS: /* FXO Loopstart */ + case DAHDI_SIG_FXOKS: /* FXO Kewlstart */ +@@ -8621,7 +8621,7 @@ void dahdi_rbsbits(struct dahdi_chan *ch + break; + case DAHDI_SIG_FXSKS: /* FXS Kewlstart */ + case DAHDI_SIG_FXSGS: /* FXS Groundstart */ +- /* Fall through */ ++ fallthrough; + case DAHDI_SIG_FXSLS: + if (!(cursig & DAHDI_BBIT)) { + /* Check for ringing first */ +@@ -9050,7 +9050,7 @@ static inline void __dahdi_process_putau + memcpy(ss->putlin, putlin, DAHDI_CHUNKSIZE * sizeof(short)); + break; + } +- /* fall through */ ++ fallthrough; + case DAHDI_CONF_CONFANN: /* Conference with announce */ + if (ms->confmode & DAHDI_CONF_TALKER) { + /* Store temp value */ +--- a/drivers/dahdi/wcaxx-base.c ++++ b/drivers/dahdi/wcaxx-base.c +@@ -1446,6 +1446,7 @@ wcaxx_check_battery_lost(struct wcaxx *w + break; + case BATTERY_UNKNOWN: + mod_hooksig(wc, mod, DAHDI_RXSIG_ONHOOK); ++ fallthrough; + case BATTERY_PRESENT: + fxo->battery_state = BATTERY_DEBOUNCING_LOST; + fxo->battdebounce_timer = wc->framecount + battdebounce; +@@ -1554,6 +1555,7 @@ wcaxx_check_battery_present(struct wcaxx + break; + case BATTERY_UNKNOWN: + mod_hooksig(wc, mod, DAHDI_RXSIG_OFFHOOK); ++ fallthrough; + case BATTERY_LOST: /* intentional drop through */ + fxo->battery_state = BATTERY_DEBOUNCING_PRESENT; + fxo->battdebounce_timer = wc->framecount + battdebounce; +--- a/drivers/dahdi/wctdm24xxp/base.c ++++ b/drivers/dahdi/wctdm24xxp/base.c +@@ -1955,6 +1955,7 @@ wctdm_check_battery_lost(struct wctdm *w + break; + case BATTERY_UNKNOWN: + mod_hooksig(wc, mod, DAHDI_RXSIG_ONHOOK); ++ fallthrough; + case BATTERY_PRESENT: + fxo->battery_state = BATTERY_DEBOUNCING_LOST; + fxo->battdebounce_timer = wc->framecount + battdebounce; +@@ -2063,6 +2064,7 @@ wctdm_check_battery_present(struct wctdm + break; + case BATTERY_UNKNOWN: + mod_hooksig(wc, mod, DAHDI_RXSIG_OFFHOOK); ++ fallthrough; + case BATTERY_LOST: /* intentional drop through */ + fxo->battery_state = BATTERY_DEBOUNCING_PRESENT; + fxo->battdebounce_timer = wc->framecount + battdebounce; +--- a/drivers/dahdi/xpp/card_global.c ++++ b/drivers/dahdi/xpp/card_global.c +@@ -148,7 +148,7 @@ static int execute_chip_command(xpd_t *x + XPD_NOTICE(xpd, + "'I' is deprecated in register commands. " + "Use 'S' instead.\n"); +- /* fall through */ ++ fallthrough; + case 'S': + do_subreg = 1; + num_args += 2; /* register + subreg */ diff --git a/libs/dahdi-linux/patches/201-dahdi-fix-always-true-compilation-warning.patch b/libs/dahdi-linux/patches/201-dahdi-fix-always-true-compilation-warning.patch new file mode 100644 index 0000000..f437f33 --- /dev/null +++ b/libs/dahdi-linux/patches/201-dahdi-fix-always-true-compilation-warning.patch @@ -0,0 +1,60 @@ +From eea6daaa4cae1ddcd8e32c8b9e4273ba3244838c Mon Sep 17 00:00:00 2001 +From: Christian Marangi +Date: Fri, 12 May 2023 20:19:04 +0200 +Subject: [PATCH 2/6] dahdi: fix always true compilation warning + +Fix always true compilation warning on statically allocated array. Check +content of the array instead. + +Signed-off-by: Christian Marangi +--- + drivers/dahdi/dahdi-base.c | 6 +++--- + drivers/dahdi/dahdi_dynamic_ethmf.c | 2 +- + drivers/dahdi/xpp/xbus-core.c | 2 +- + 3 files changed, 5 insertions(+), 5 deletions(-) + +--- a/drivers/dahdi/dahdi-base.c ++++ b/drivers/dahdi/dahdi-base.c +@@ -923,9 +923,9 @@ static int dahdi_seq_show(struct seq_fil + if (!s) + return -ENODEV; + +- if (s->name) ++ if (*(s->name)) + seq_printf(sfile, "Span %d: %s ", s->spanno, s->name); +- if (s->desc) ++ if (*(s->desc)) + seq_printf(sfile, "\"%s\"", s->desc); + else + seq_printf(sfile, "\"\""); +@@ -964,7 +964,7 @@ static int dahdi_seq_show(struct seq_fil + for (x = 0; x < s->channels; x++) { + struct dahdi_chan *chan = s->chans[x]; + +- if (chan->name) ++ if (*(chan->name)) + seq_printf(sfile, "\t%4d %s ", chan->channo, + chan->name); + +--- a/drivers/dahdi/dahdi_dynamic_ethmf.c ++++ b/drivers/dahdi/dahdi_dynamic_ethmf.c +@@ -535,7 +535,7 @@ static void ztdethmf_destroy(struct dahd + kfree(z->msgbuf); + kfree(z); + } else { +- if (z && z->span && z->span->name) { ++ if (z && z->span && *(z->span->name)) { + printk(KERN_ERR "Cannot find interface for %s\n", + z->span->name); + } +--- a/drivers/dahdi/xpp/xbus-core.c ++++ b/drivers/dahdi/xpp/xbus-core.c +@@ -120,7 +120,7 @@ int xbus_check_unique(xbus_t *xbus) + { + if (!xbus) + return -ENOENT; +- if (xbus->label && *(xbus->label)) { ++ if (*(xbus->label)) { + xbus_t *xbus_old; + + XBUS_DBG(DEVICES, xbus, "Checking LABEL='%s'\n", xbus->label); diff --git a/libs/dahdi-linux/patches/202-dahdi-sysfs-chan-fix-bug-if-clause-does-not-guard.patch b/libs/dahdi-linux/patches/202-dahdi-sysfs-chan-fix-bug-if-clause-does-not-guard.patch new file mode 100644 index 0000000..b887094 --- /dev/null +++ b/libs/dahdi-linux/patches/202-dahdi-sysfs-chan-fix-bug-if-clause-does-not-guard.patch @@ -0,0 +1,28 @@ +From d0699f781e96df6c1fd10551c92fa27695b297da Mon Sep 17 00:00:00 2001 +From: Christian Marangi +Date: Fri, 12 May 2023 20:19:45 +0200 +Subject: [PATCH 3/6] dahdi-sysfs-chan: fix bug if clause does not guard + +Fix bug if clause does not guard by a typo by missing the if clause and +not correctly removing the device. + +Signed-off-by: Christian Marangi +--- + drivers/dahdi/dahdi-sysfs-chan.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/dahdi/dahdi-sysfs-chan.c ++++ b/drivers/dahdi/dahdi-sysfs-chan.c +@@ -381,10 +381,11 @@ static void fixed_devfiles_remove(void) + return; + for (i = 0; i < ARRAY_SIZE(fixed_minors); i++) { + void *d = fixed_minors[i].dev; +- if (d && !IS_ERR(d)) ++ if (d && !IS_ERR(d)) { + dahdi_dbg(DEVICES, "Removing fixed device file %s\n", + fixed_minors[i].name); + DEL_DAHDI_DEV(fixed_minors[i].minor); ++ } + } + } + diff --git a/libs/dahdi-linux/patches/203-wcte13xp-fix-missing-break-in-t13x_set_linemode.patch b/libs/dahdi-linux/patches/203-wcte13xp-fix-missing-break-in-t13x_set_linemode.patch new file mode 100644 index 0000000..4ab211b --- /dev/null +++ b/libs/dahdi-linux/patches/203-wcte13xp-fix-missing-break-in-t13x_set_linemode.patch @@ -0,0 +1,23 @@ +From be9cab7860ef0872e9fa0a0bc42f1a391d7ac8da Mon Sep 17 00:00:00 2001 +From: Christian Marangi +Date: Fri, 12 May 2023 20:20:42 +0200 +Subject: [PATCH 4/6] wcte13xp: fix missing break in t13x_set_linemode + +Fix missing break in t13x_set_linemode as currently it does uncorrectly +fallthrough. + +Signed-off-by: Christian Marangi +--- + drivers/dahdi/wcte13xp-base.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/dahdi/wcte13xp-base.c ++++ b/drivers/dahdi/wcte13xp-base.c +@@ -1875,6 +1875,7 @@ static int t13x_set_linemode(struct dahd + "Changing from %s to E1 line mode.\n", + dahdi_spantype2str(wc->span.spantype)); + res = t13x_software_init(wc, J1); ++ break; + default: + dev_err(&wc->xb.pdev->dev, + "Got invalid linemode '%s' from dahdi\n", diff --git a/libs/dahdi-linux/patches/204-dahdi-skip-checking-on-releasing.patch b/libs/dahdi-linux/patches/204-dahdi-skip-checking-on-releasing.patch new file mode 100644 index 0000000..b549f64 --- /dev/null +++ b/libs/dahdi-linux/patches/204-dahdi-skip-checking-on-releasing.patch @@ -0,0 +1,38 @@ +From 88cfe20bcd0be443fc7613fd287147d1c54b5f7f Mon Sep 17 00:00:00 2001 +From: Christian Marangi +Date: Fri, 12 May 2023 20:21:39 +0200 +Subject: [PATCH 5/6] dahdi: skip checking on releasing + +Skip checking on releasing since xb is statically allocated and always +present. + +Signed-off-by: Christian Marangi +--- + drivers/dahdi/wcte13xp-base.c | 3 +-- + drivers/dahdi/wcte43x-base.c | 3 +-- + 2 files changed, 2 insertions(+), 4 deletions(-) + +--- a/drivers/dahdi/wcte13xp-base.c ++++ b/drivers/dahdi/wcte13xp-base.c +@@ -2702,8 +2702,7 @@ static int __devinit te13xp_init_one(str + return 0; + + fail_exit: +- if (&wc->xb) +- wcxb_release(&wc->xb); ++ wcxb_release(&wc->xb); + + free_wc(wc); + return res; +--- a/drivers/dahdi/wcte43x-base.c ++++ b/drivers/dahdi/wcte43x-base.c +@@ -3515,8 +3515,7 @@ static int __devinit t43x_init_one(struc + return 0; + + fail_exit: +- if (&wc->xb) +- wcxb_release(&wc->xb); ++ wcxb_release(&wc->xb); + + if (debug) + dev_info(&wc->xb.pdev->dev, "***At fail_exit in init_one***\n"); diff --git a/libs/dahdi-linux/patches/205-dahdi-xpp-fix-wrong-printf-to-d.patch b/libs/dahdi-linux/patches/205-dahdi-xpp-fix-wrong-printf-to-d.patch new file mode 100644 index 0000000..52b9036 --- /dev/null +++ b/libs/dahdi-linux/patches/205-dahdi-xpp-fix-wrong-printf-to-d.patch @@ -0,0 +1,44 @@ +From 14a9e676d635b1c2be1bab4114cc76c1793892d0 Mon Sep 17 00:00:00 2001 +From: Christian Marangi +Date: Fri, 12 May 2023 20:22:31 +0200 +Subject: [PATCH 6/6] dahdi: xpp: fix wrong printf to %d + +Fix wrong printf that should be %d with int variables. + +Signed-off-by: Christian Marangi +--- + drivers/dahdi/xpp/xbus-core.c | 2 +- + drivers/dahdi/xpp/xframe_queue.c | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +--- a/drivers/dahdi/xpp/xbus-core.c ++++ b/drivers/dahdi/xpp/xbus-core.c +@@ -1772,7 +1772,7 @@ static void xbus_fill_proc_queue(struct + s32 rem; + s64 lag_sec = div_s64_rem(q->worst_lag_usec, 1000, &rem); + seq_printf(sfile, +- "%-15s: counts %3d, %3d, %3d worst %3d, overflows %3d worst_lag %02lld.%ld ms\n", ++ "%-15s: counts %3d, %3d, %3d worst %3d, overflows %3d worst_lag %02lld.%d ms\n", + q->name, q->steady_state_count, q->count, q->max_count, + q->worst_count, q->overflows, lag_sec, + rem); +--- a/drivers/dahdi/xpp/xframe_queue.c ++++ b/drivers/dahdi/xpp/xframe_queue.c +@@ -44,7 +44,7 @@ static void __xframe_dump_queue(struct x + s32 rem; + s64 sec = div_s64_rem(ktime_us_delta(now, xframe->kt_queued), 1000, &rem); + +- snprintf(prefix, ARRAY_SIZE(prefix), " %3d> %5lld.%03ld msec", ++ snprintf(prefix, ARRAY_SIZE(prefix), " %3d> %5lld.%03d msec", + i++, sec, rem); + dump_packet(prefix, pack, 1); + } +@@ -64,7 +64,7 @@ static bool __xframe_enqueue(struct xfra + if ((overflow_cnt++ % 1000) < 5) { + s32 rem; + s64 lag_sec = div_s64_rem(q->worst_lag_usec, 1000, &rem); +- NOTICE("Overflow of %-15s: counts %3d, %3d, %3d worst %3d, overflows %3d worst_lag %02lld.%ld ms\n", ++ NOTICE("Overflow of %-15s: counts %3d, %3d, %3d worst %3d, overflows %3d worst_lag %02lld.%d ms\n", + q->name, q->steady_state_count, q->count, + q->max_count, q->worst_count, q->overflows, + lag_sec, -- 2.30.2