2021-03-14 04:17:55

by Tong Zhang

[permalink] [raw]
Subject: [PATCH] staging: comedi: cb_pcidas: replace slash in name

request_irq() wont accept a name which contains slash so we need to
repalce it with something else -- otherwise it will trigger a warning
and the entry in /proc/irq/ will not be created

[ 1.630764] name 'pci-das1602/16'
[ 1.630950] WARNING: CPU: 0 PID: 181 at fs/proc/generic.c:180 __xlate_proc_name+0x93/0xb0
[ 1.634009] RIP: 0010:__xlate_proc_name+0x93/0xb0
[ 1.639441] Call Trace:
[ 1.639976] proc_mkdir+0x18/0x20
[ 1.641946] request_threaded_irq+0xfe/0x160
[ 1.642186] cb_pcidas_auto_attach+0xf4/0x610 [cb_pcidas]

Signed-off-by: Tong Zhang <[email protected]>
---
drivers/staging/comedi/drivers/cb_pcidas.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/staging/comedi/drivers/cb_pcidas.c b/drivers/staging/comedi/drivers/cb_pcidas.c
index d740c4782775..df0960d41cff 100644
--- a/drivers/staging/comedi/drivers/cb_pcidas.c
+++ b/drivers/staging/comedi/drivers/cb_pcidas.c
@@ -230,7 +230,7 @@ struct cb_pcidas_board {

static const struct cb_pcidas_board cb_pcidas_boards[] = {
[BOARD_PCIDAS1602_16] = {
- .name = "pci-das1602/16",
+ .name = "pci-das1602-16",
.ai_speed = 5000,
.ao_scan_speed = 10000,
.fifo_size = 512,
@@ -248,7 +248,7 @@ static const struct cb_pcidas_board cb_pcidas_boards[] = {
.has_ao = 1,
},
[BOARD_PCIDAS1602_12] = {
- .name = "pci-das1602/12",
+ .name = "pci-das1602-12",
.ai_speed = 3200,
.ao_scan_speed = 4000,
.fifo_size = 1024,
@@ -257,12 +257,12 @@ static const struct cb_pcidas_board cb_pcidas_boards[] = {
.is_1602 = 1,
},
[BOARD_PCIDAS1200_JR] = {
- .name = "pci-das1200/jr",
+ .name = "pci-das1200-jr",
.ai_speed = 3200,
.fifo_size = 1024,
},
[BOARD_PCIDAS1602_16_JR] = {
- .name = "pci-das1602/16/jr",
+ .name = "pci-das1602-16-jr",
.ai_speed = 5000,
.fifo_size = 512,
.is_16bit = 1,
--
2.25.1


2021-03-15 10:52:43

by Ian Abbott

[permalink] [raw]
Subject: Re: [PATCH] staging: comedi: cb_pcidas: replace slash in name

On 14/03/2021 04:02, Tong Zhang wrote:
> request_irq() wont accept a name which contains slash so we need to
> repalce it with something else -- otherwise it will trigger a warning
> and the entry in /proc/irq/ will not be created
>
> [ 1.630764] name 'pci-das1602/16'
> [ 1.630950] WARNING: CPU: 0 PID: 181 at fs/proc/generic.c:180 __xlate_proc_name+0x93/0xb0
> [ 1.634009] RIP: 0010:__xlate_proc_name+0x93/0xb0
> [ 1.639441] Call Trace:
> [ 1.639976] proc_mkdir+0x18/0x20
> [ 1.641946] request_threaded_irq+0xfe/0x160
> [ 1.642186] cb_pcidas_auto_attach+0xf4/0x610 [cb_pcidas]
>
> Signed-off-by: Tong Zhang <[email protected]>
> ---
> drivers/staging/comedi/drivers/cb_pcidas.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/staging/comedi/drivers/cb_pcidas.c b/drivers/staging/comedi/drivers/cb_pcidas.c
> index d740c4782775..df0960d41cff 100644
> --- a/drivers/staging/comedi/drivers/cb_pcidas.c
> +++ b/drivers/staging/comedi/drivers/cb_pcidas.c
> @@ -230,7 +230,7 @@ struct cb_pcidas_board {
>
> static const struct cb_pcidas_board cb_pcidas_boards[] = {
> [BOARD_PCIDAS1602_16] = {
> - .name = "pci-das1602/16",
> + .name = "pci-das1602-16",
> .ai_speed = 5000,
> .ao_scan_speed = 10000,
> .fifo_size = 512,
> @@ -248,7 +248,7 @@ static const struct cb_pcidas_board cb_pcidas_boards[] = {
> .has_ao = 1,
> },
> [BOARD_PCIDAS1602_12] = {
> - .name = "pci-das1602/12",
> + .name = "pci-das1602-12",
> .ai_speed = 3200,
> .ao_scan_speed = 4000,
> .fifo_size = 1024,
> @@ -257,12 +257,12 @@ static const struct cb_pcidas_board cb_pcidas_boards[] = {
> .is_1602 = 1,
> },
> [BOARD_PCIDAS1200_JR] = {
> - .name = "pci-das1200/jr",
> + .name = "pci-das1200-jr",
> .ai_speed = 3200,
> .fifo_size = 1024,
> },
> [BOARD_PCIDAS1602_16_JR] = {
> - .name = "pci-das1602/16/jr",
> + .name = "pci-das1602-16-jr",
> .ai_speed = 5000,
> .fifo_size = 512,
> .is_16bit = 1,
>

As for cb_pcidas64, the board name may be used by user-space
applications, so this may break those applications.

I suggest passing the comedi driver name "cb_pcidas" to request_irq()
for now. (It can also be reached via dev->driver->driver_name .)

--
-=( Ian Abbott <[email protected]> || MEV Ltd. is a company )=-
-=( registered in England & Wales. Regd. number: 02862268. )=-
-=( Regd. addr.: S11 & 12 Building 67, Europa Business Park, )=-
-=( Bird Hall Lane, STOCKPORT, SK3 0XA, UK. || http://www.mev.co.uk )=-

2021-03-15 21:41:03

by Tong Zhang

[permalink] [raw]
Subject: [PATCH v2] staging: comedi: cb_pcidas: fix request_irq() warn

request_irq() wont accept a name which contains slash so we need to
repalce it with something else -- otherwise it will trigger a warning
and the entry in /proc/irq/ will not be created
since the .name might be used by userspace and we don't want to break
userspace, so we are changing the parameters passed to request_irq()

[ 1.630764] name 'pci-das1602/16'
[ 1.630950] WARNING: CPU: 0 PID: 181 at fs/proc/generic.c:180 __xlate_proc_name+0x93/0xb0
[ 1.634009] RIP: 0010:__xlate_proc_name+0x93/0xb0
[ 1.639441] Call Trace:
[ 1.639976] proc_mkdir+0x18/0x20
[ 1.641946] request_threaded_irq+0xfe/0x160
[ 1.642186] cb_pcidas_auto_attach+0xf4/0x610 [cb_pcidas]

Suggested-by: Ian Abbott <[email protected]>
Signed-off-by: Tong Zhang <[email protected]>
---
v2: revert changes to .name field so that we dont break userspace

drivers/staging/comedi/drivers/cb_pcidas.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/comedi/drivers/cb_pcidas.c b/drivers/staging/comedi/drivers/cb_pcidas.c
index d740c4782775..2f20bd56ec6c 100644
--- a/drivers/staging/comedi/drivers/cb_pcidas.c
+++ b/drivers/staging/comedi/drivers/cb_pcidas.c
@@ -1281,7 +1281,7 @@ static int cb_pcidas_auto_attach(struct comedi_device *dev,
devpriv->amcc + AMCC_OP_REG_INTCSR);

ret = request_irq(pcidev->irq, cb_pcidas_interrupt, IRQF_SHARED,
- dev->board_name, dev);
+ "cb_pcidas", dev);
if (ret) {
dev_dbg(dev->class_dev, "unable to allocate irq %d\n",
pcidev->irq);
--
2.25.1

2021-03-16 15:18:50

by Ian Abbott

[permalink] [raw]
Subject: Re: [PATCH v2] staging: comedi: cb_pcidas: fix request_irq() warn

On 15/03/2021 19:59, Tong Zhang wrote:
> request_irq() wont accept a name which contains slash so we need to
> repalce it with something else -- otherwise it will trigger a warning
> and the entry in /proc/irq/ will not be created
> since the .name might be used by userspace and we don't want to break
> userspace, so we are changing the parameters passed to request_irq()
>
> [ 1.630764] name 'pci-das1602/16'
> [ 1.630950] WARNING: CPU: 0 PID: 181 at fs/proc/generic.c:180 __xlate_proc_name+0x93/0xb0
> [ 1.634009] RIP: 0010:__xlate_proc_name+0x93/0xb0
> [ 1.639441] Call Trace:
> [ 1.639976] proc_mkdir+0x18/0x20
> [ 1.641946] request_threaded_irq+0xfe/0x160
> [ 1.642186] cb_pcidas_auto_attach+0xf4/0x610 [cb_pcidas]
>
> Suggested-by: Ian Abbott <[email protected]>
> Signed-off-by: Tong Zhang <[email protected]>
> ---
> v2: revert changes to .name field so that we dont break userspace
>
> drivers/staging/comedi/drivers/cb_pcidas.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/staging/comedi/drivers/cb_pcidas.c b/drivers/staging/comedi/drivers/cb_pcidas.c
> index d740c4782775..2f20bd56ec6c 100644
> --- a/drivers/staging/comedi/drivers/cb_pcidas.c
> +++ b/drivers/staging/comedi/drivers/cb_pcidas.c
> @@ -1281,7 +1281,7 @@ static int cb_pcidas_auto_attach(struct comedi_device *dev,
> devpriv->amcc + AMCC_OP_REG_INTCSR);
>
> ret = request_irq(pcidev->irq, cb_pcidas_interrupt, IRQF_SHARED,
> - dev->board_name, dev);
> + "cb_pcidas", dev);
> if (ret) {
> dev_dbg(dev->class_dev, "unable to allocate irq %d\n",
> pcidev->irq);
>

Looks good.

Reviewed-by: Ian Abbott <[email protected]>

--
-=( Ian Abbott <[email protected]> || MEV Ltd. is a company )=-
-=( registered in England & Wales. Regd. number: 02862268. )=-
-=( Regd. addr.: S11 & 12 Building 67, Europa Business Park, )=-
-=( Bird Hall Lane, STOCKPORT, SK3 0XA, UK. || http://www.mev.co.uk )=-