| From 497f11466688d9e76a7b68ffdd2c3859279f5fce Mon Sep 17 00:00:00 2001 |
| From: Pushkar Singh <psingh@sangoma.com> |
| Date: Thu, 4 Apr 2024 01:15:01 +0530 |
| Subject: [PATCH] Fix compilation issue for 6.8.y/6.9.y kernel |
| |
| Upstream: https://github.com/asterisk/dahdi-linux/commit/497f11466688d9e76a7b68ffdd2c3859279f5fce |
| Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> |
| --- |
| drivers/dahdi/dahdi-base.c | 40 ++++++++++++++--------------- |
| drivers/dahdi/dahdi_dynamic.c | 4 +-- |
| drivers/dahdi/dahdi_dynamic_eth.c | 4 +-- |
| drivers/dahdi/dahdi_dynamic_ethmf.c | 2 +- |
| drivers/dahdi/dahdi_transcode.c | 2 +- |
| drivers/dahdi/xpp/card_global.c | 2 +- |
| 6 files changed, 27 insertions(+), 27 deletions(-) |
| |
| diff --git a/drivers/dahdi/dahdi-base.c b/drivers/dahdi/dahdi-base.c |
| index b96f72b1..87177a69 100644 |
| --- a/drivers/dahdi/dahdi-base.c |
| +++ b/drivers/dahdi/dahdi-base.c |
| @@ -4359,7 +4359,7 @@ static int dahdi_ioctl_getparams(struct file *file, unsigned long data) |
| param.pulsebreaktime = chan->pulsebreaktime; |
| param.pulseaftertime = chan->pulseaftertime; |
| param.spanno = (chan->span) ? chan->span->spanno : 0; |
| - strlcpy(param.name, chan->name, sizeof(param.name)); |
| + strscpy(param.name, chan->name, sizeof(param.name)); |
| param.chanpos = chan->chanpos; |
| param.sigcap = chan->sigcap; |
| /* Return current law */ |
| @@ -4447,8 +4447,8 @@ static int dahdi_ioctl_spanstat(struct file *file, unsigned long data) |
| |
| spaninfo.spanno = s->spanno; /* put the span # in here */ |
| spaninfo.totalspans = span_count(); |
| - strlcpy(spaninfo.desc, s->desc, sizeof(spaninfo.desc)); |
| - strlcpy(spaninfo.name, s->name, sizeof(spaninfo.name)); |
| + strscpy(spaninfo.desc, s->desc, sizeof(spaninfo.desc)); |
| + strscpy(spaninfo.name, s->name, sizeof(spaninfo.name)); |
| spaninfo.alarms = s->alarms; /* get alarm status */ |
| spaninfo.rxlevel = s->rxlevel; /* get rx level */ |
| spaninfo.txlevel = s->txlevel; /* get tx level */ |
| @@ -4475,18 +4475,18 @@ static int dahdi_ioctl_spanstat(struct file *file, unsigned long data) |
| spaninfo.lineconfig = s->lineconfig; |
| spaninfo.irq = 0; |
| spaninfo.linecompat = s->linecompat; |
| - strlcpy(spaninfo.lboname, dahdi_lboname(s->lbo), |
| + strscpy(spaninfo.lboname, dahdi_lboname(s->lbo), |
| sizeof(spaninfo.lboname)); |
| if (s->parent->manufacturer) { |
| - strlcpy(spaninfo.manufacturer, s->parent->manufacturer, |
| + strscpy(spaninfo.manufacturer, s->parent->manufacturer, |
| sizeof(spaninfo.manufacturer)); |
| } |
| if (s->parent->devicetype) { |
| - strlcpy(spaninfo.devicetype, s->parent->devicetype, |
| + strscpy(spaninfo.devicetype, s->parent->devicetype, |
| sizeof(spaninfo.devicetype)); |
| } |
| if (s->parent->location) { |
| - strlcpy(spaninfo.location, s->parent->location, |
| + strscpy(spaninfo.location, s->parent->location, |
| sizeof(spaninfo.location)); |
| } |
| if (s->spantype) { |
| @@ -4505,11 +4505,11 @@ static int dahdi_ioctl_spanstat(struct file *file, unsigned long data) |
| const char *st = dahdi_spantype2str(s->spantype); |
| switch (s->spantype) { |
| case SPANTYPE_DIGITAL_BRI_NT: |
| - strlcpy(spaninfo.spantype, "NT", |
| + strscpy(spaninfo.spantype, "NT", |
| sizeof(spaninfo.spantype)); |
| break; |
| case SPANTYPE_DIGITAL_BRI_TE: |
| - strlcpy(spaninfo.spantype, "TE", |
| + strscpy(spaninfo.spantype, "TE", |
| sizeof(spaninfo.spantype)); |
| break; |
| default: |
| @@ -4519,7 +4519,7 @@ static int dahdi_ioctl_spanstat(struct file *file, unsigned long data) |
| * so no backward compatibility for this |
| * broken interface. |
| */ |
| - strlcpy(spaninfo.spantype, st, |
| + strscpy(spaninfo.spantype, st, |
| sizeof(spaninfo.spantype)); |
| break; |
| } |
| @@ -4568,10 +4568,10 @@ static int dahdi_ioctl_spanstat_v1(struct file *file, unsigned long data) |
| spaninfo_v1.spanno = s->spanno; /* put the span # in here */ |
| spaninfo_v1.totalspans = 0; |
| spaninfo_v1.totalspans = span_count(); |
| - strlcpy(spaninfo_v1.desc, |
| + strscpy(spaninfo_v1.desc, |
| s->desc, |
| sizeof(spaninfo_v1.desc)); |
| - strlcpy(spaninfo_v1.name, |
| + strscpy(spaninfo_v1.name, |
| s->name, |
| sizeof(spaninfo_v1.name)); |
| spaninfo_v1.alarms = s->alarms; |
| @@ -4593,25 +4593,25 @@ static int dahdi_ioctl_spanstat_v1(struct file *file, unsigned long data) |
| spaninfo_v1.lineconfig = s->lineconfig; |
| spaninfo_v1.irq = 0; |
| spaninfo_v1.linecompat = s->linecompat; |
| - strlcpy(spaninfo_v1.lboname, |
| + strscpy(spaninfo_v1.lboname, |
| dahdi_lboname(s->lbo), |
| sizeof(spaninfo_v1.lboname)); |
| |
| if (s->parent->manufacturer) { |
| - strlcpy(spaninfo_v1.manufacturer, s->parent->manufacturer, |
| + strscpy(spaninfo_v1.manufacturer, s->parent->manufacturer, |
| sizeof(spaninfo_v1.manufacturer)); |
| } |
| |
| if (s->parent->devicetype) { |
| - strlcpy(spaninfo_v1.devicetype, s->parent->devicetype, |
| + strscpy(spaninfo_v1.devicetype, s->parent->devicetype, |
| sizeof(spaninfo_v1.devicetype)); |
| } |
| |
| - strlcpy(spaninfo_v1.location, s->parent->location, |
| + strscpy(spaninfo_v1.location, s->parent->location, |
| sizeof(spaninfo_v1.location)); |
| |
| if (s->spantype) { |
| - strlcpy(spaninfo_v1.spantype, |
| + strscpy(spaninfo_v1.spantype, |
| dahdi_spantype2str(s->spantype), |
| sizeof(spaninfo_v1.spantype)); |
| } |
| @@ -5285,7 +5285,7 @@ static int dahdi_ioctl_attach_echocan(unsigned long data) |
| * always use it instead of any configured software |
| * echocan. This matches the behavior in dahdi 2.4.1.2 |
| * and earlier releases. */ |
| - strlcpy(ae.echocan, hwec_def_name, sizeof(ae.echocan)); |
| + strscpy(ae.echocan, hwec_def_name, sizeof(ae.echocan)); |
| |
| } else if (strcasecmp(ae.echocan, hwec_def_name) != 0) { |
| chan_dbg(GENERAL, chan, |
| @@ -5384,7 +5384,7 @@ static int dahdi_ioctl_get_version(unsigned long data) |
| bool have_hwec = dahdi_any_hwec_available(); |
| |
| memset(&vi, 0, sizeof(vi)); |
| - strlcpy(vi.version, dahdi_version, sizeof(vi.version)); |
| + strscpy(vi.version, dahdi_version, sizeof(vi.version)); |
| spin_lock(&ecfactory_list_lock); |
| list_for_each_entry(cur, &ecfactory_list, list) { |
| const char * const ec_name = cur->ec->get_name(NULL); |
| @@ -5640,7 +5640,7 @@ static int ioctl_dahdi_dial(struct dahdi_chan *chan, unsigned long data) |
| rv = -EBUSY; |
| break; |
| } |
| - strlcpy(chan->txdialbuf + strlen(chan->txdialbuf), tdo->dialstr, |
| + strscpy(chan->txdialbuf + strlen(chan->txdialbuf), tdo->dialstr, |
| DAHDI_MAX_DTMF_BUF - strlen(chan->txdialbuf)); |
| if (!chan->dialing) { |
| chan->dialing = 1; |
| diff --git a/drivers/dahdi/dahdi_dynamic.c b/drivers/dahdi/dahdi_dynamic.c |
| index b1df408d..be58aff8 100644 |
| --- a/drivers/dahdi/dahdi_dynamic.c |
| +++ b/drivers/dahdi/dahdi_dynamic.c |
| @@ -622,8 +622,8 @@ static int _create_dynamic(struct dahdi_dynamic_span *dds) |
| } |
| |
| /* Setup parameters properly assuming we're going to be okay. */ |
| - strlcpy(d->dname, dds->driver, sizeof(d->dname)); |
| - strlcpy(d->addr, dds->addr, sizeof(d->addr)); |
| + strscpy(d->dname, dds->driver, sizeof(d->dname)); |
| + strscpy(d->addr, dds->addr, sizeof(d->addr)); |
| d->timing = dds->timing; |
| snprintf(d->span.name, sizeof(d->span.name), "DYN/%s/%s", |
| dds->driver, dds->addr); |
| diff --git a/drivers/dahdi/dahdi_dynamic_eth.c b/drivers/dahdi/dahdi_dynamic_eth.c |
| index 0209489b..c7a293dd 100644 |
| --- a/drivers/dahdi/dahdi_dynamic_eth.c |
| +++ b/drivers/dahdi/dahdi_dynamic_eth.c |
| @@ -292,12 +292,12 @@ static int ztdeth_create(struct dahdi_dynamic *dyn, const char *addr) |
| memset(z, 0, sizeof(struct ztdeth)); |
| |
| /* Address should be <dev>/<macaddr>[/subaddr] */ |
| - strlcpy(tmp, addr, sizeof(tmp)); |
| + strscpy(tmp, addr, sizeof(tmp)); |
| tmp2 = strchr(tmp, '/'); |
| if (tmp2) { |
| *tmp2 = '\0'; |
| tmp2++; |
| - strlcpy(z->ethdev, tmp, sizeof(z->ethdev)); |
| + strscpy(z->ethdev, tmp, sizeof(z->ethdev)); |
| } else { |
| printk(KERN_NOTICE "Invalid TDMoE address (no device) '%s'\n", addr); |
| kfree(z); |
| diff --git a/drivers/dahdi/dahdi_dynamic_ethmf.c b/drivers/dahdi/dahdi_dynamic_ethmf.c |
| index 73290d8d..f7c067fb 100644 |
| --- a/drivers/dahdi/dahdi_dynamic_ethmf.c |
| +++ b/drivers/dahdi/dahdi_dynamic_ethmf.c |
| @@ -573,7 +573,7 @@ static int ztdethmf_create(struct dahdi_dynamic *dyn, const char *addr) |
| z->rcvbuf = kmalloc(bufsize, GFP_KERNEL); |
| |
| /* Address should be <dev>/<macaddr>/subaddr */ |
| - strlcpy(src, addr, sizeof(src)); |
| + strscpy(src, addr, sizeof(src)); |
| /* replace all / with space; otherwise kernel sscanf does not work */ |
| src_ptr = src; |
| while (*src_ptr) { |
| diff --git a/drivers/dahdi/dahdi_transcode.c b/drivers/dahdi/dahdi_transcode.c |
| index 6021aac2..7645e2f1 100644 |
| --- a/drivers/dahdi/dahdi_transcode.c |
| +++ b/drivers/dahdi/dahdi_transcode.c |
| @@ -329,7 +329,7 @@ static long dahdi_tc_getinfo(unsigned long data) |
| return -ENOSYS; |
| } |
| |
| - strlcpy(info.name, tc->name, sizeof(info.name)); |
| + strscpy(info.name, tc->name, sizeof(info.name)); |
| info.numchannels = tc->numchannels; |
| info.srcfmts = tc->srcfmts; |
| info.dstfmts = tc->dstfmts; |
| diff --git a/drivers/dahdi/xpp/card_global.c b/drivers/dahdi/xpp/card_global.c |
| index 9e679bbc..064edbb3 100644 |
| --- a/drivers/dahdi/xpp/card_global.c |
| +++ b/drivers/dahdi/xpp/card_global.c |
| @@ -342,7 +342,7 @@ int parse_chip_command(xpd_t *xpd, char *cmdline) |
| XBUS_DBG(GENERAL, xbus, "Dropped packet. Disconnected.\n"); |
| return -EBUSY; |
| } |
| - strlcpy(buf, cmdline, MAX_PROC_WRITE); /* Save a copy */ |
| + strscpy(buf, cmdline, MAX_PROC_WRITE); /* Save a copy */ |
| if (buf[0] == '#' || buf[0] == ';') |
| XPD_DBG(REGS, xpd, "Note: '%s'\n", buf); |
| if ((p = strchr(buf, '#')) != NULL) /* Truncate comments */ |