2008-07-25 19:26:55

by Roel Kluin

[permalink] [raw]
Subject: isdn/eicon: msg_in_{wrap,read}_pos assigned twice?

vi drivers/isdn/hardware/eicon/message.c +4035

and note two similar tests on line 4035 and 4049:

[else] if (plci->msg_in_read_pos == plci->msg_in_wrap_pos)

after the first test:

plci->msg_in_wrap_pos = MSG_IN_QUEUE_SIZE;
plci->msg_in_read_pos = i + MSG_IN_OVERHEAD;

but then after the second test as well:

plci->msg_in_read_pos = MSG_IN_QUEUE_SIZE;
plci->msg_in_wrap_pos = MSG_IN_QUEUE_SIZE;


So the assignment after the first test has no effect. Is this a bug?

Roel Kluin


2008-07-28 15:06:47

by Armin Schindler

[permalink] [raw]
Subject: Re: isdn/eicon: msg_in_{wrap,read}_pos assigned twice?

On Fri, 25 Jul 2008, roel kluin wrote:
> vi drivers/isdn/hardware/eicon/message.c +4035
>
> and note two similar tests on line 4035 and 4049:
>
> [else] if (plci->msg_in_read_pos == plci->msg_in_wrap_pos)
>
> after the first test:
>
> plci->msg_in_wrap_pos = MSG_IN_QUEUE_SIZE;
> plci->msg_in_read_pos = i + MSG_IN_OVERHEAD;
>
> but then after the second test as well:
>
> plci->msg_in_read_pos = MSG_IN_QUEUE_SIZE;
> plci->msg_in_wrap_pos = MSG_IN_QUEUE_SIZE;
>
>
> So the assignment after the first test has no effect. Is this a bug?

If (plci->msg_in_read_pos == plci->msg_in_wrap_pos) is true in the first
test it can't be true in the second.
So the code could be optimized a bit. But the first assignments are needed.

If it's false in the first it may become true in the second. So it's not a
bug. All conditions are really needed.

Armin