2012-03-07 12:51:45

by Andrei Emeltchenko

[permalink] [raw]
Subject: [PATCH] Bluetooth: Fix incorrect uninitialized assignment

From: Andrei Emeltchenko <[email protected]>

Revert part of commit 8035ded4 which has introduced bug by
assigning uninitialized value.

...
+ src/net/bluetooth/rfcomm/tty.c: warning: 'p' is used uninitialized in this
function: => 218
+ src/net/bluetooth/rfcomm/tty.c: warning: 'p' may be used uninitialized in
this function: => 218
...

Reported-by: Geert Uytterhoeven <[email protected]>
Signed-off-by: Andrei Emeltchenko <[email protected]>
---
net/bluetooth/rfcomm/tty.c | 8 +++++---
1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c
index a2d4f51..ca6c8a6 100644
--- a/net/bluetooth/rfcomm/tty.c
+++ b/net/bluetooth/rfcomm/tty.c
@@ -210,8 +210,8 @@ static int rfcomm_dev_add(struct rfcomm_dev_req *req, struct rfcomm_dlc *dlc)
if (req->dev_id < 0) {
dev->id = 0;

- list_for_each_entry(entry, &rfcomm_dev_list, list) {
- if (entry->id != dev->id)
+ list_for_each(p, &rfcomm_dev_list) {
+ if (list_entry(p, struct rfcomm_dev, list)->id != dev->id)
break;

dev->id++;
@@ -220,7 +220,9 @@ static int rfcomm_dev_add(struct rfcomm_dev_req *req, struct rfcomm_dlc *dlc)
} else {
dev->id = req->dev_id;

- list_for_each_entry(entry, &rfcomm_dev_list, list) {
+ list_for_each(p, &rfcomm_dev_list) {
+ struct rfcomm_dev *entry = list_entry(p, struct rfcomm_dev, list);
+
if (entry->id == dev->id) {
err = -EADDRINUSE;
goto out;
--
1.7.9



2012-03-08 05:23:51

by Gustavo Padovan

[permalink] [raw]
Subject: Re: [PATCH] Bluetooth: Fix incorrect uninitialized assignment

Hi Andrei,

* Andrei Emeltchenko <[email protected]> [2012-03-07 14:51:45 +0200]:

> From: Andrei Emeltchenko <[email protected]>
>
> Revert part of commit 8035ded4 which has introduced bug by
> assigning uninitialized value.
>
> ...
> + src/net/bluetooth/rfcomm/tty.c: warning: 'p' is used uninitialized in this
> function: => 218
> + src/net/bluetooth/rfcomm/tty.c: warning: 'p' may be used uninitialized in
> this function: => 218
> ...
>
> Reported-by: Geert Uytterhoeven <[email protected]>
> Signed-off-by: Andrei Emeltchenko <[email protected]>
> ---
> net/bluetooth/rfcomm/tty.c | 8 +++++---
> 1 files changed, 5 insertions(+), 3 deletions(-)

I saw Luiz' fix for this before and I already applied it.
Also I prefer to keep the list_for_each_entry() call.

Gustavo