POWERPC: don't cast a pointer to pointer of list_head
PATCH 1/3 POWERPC: don't cast a pointer to pointer of list_head
The casting is safe only when the list_head member is the first member of the structure.
--- arch/ppc/syslib/ocp.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
arch/ppc/syslib/ocp.c +1 -1
@@ -376,7 +376,7 @@ ocp_remove_one_device(unsigned int vendor, unsigned int function, int index)down_write (&ocp_devices_sem); dev =__ocp_find_device (vendor, function, index); -list_del ((struct list_head *)dev); +list_del (&dev->link);up_write (&ocp_devices_sem);DBG (("ocp: ocp_remove_one_device(vendor: %x, function: %x, index: %d)... done.\n" , vendor, function, index));
Signature · 1 line
1.5.3.rc7
Quoted 2 lines · Li Zefan
The casting is safe only when the
list_headmember is the first member of the structure.
Even so, I don't think too safe :) It might technically work, but it could break more easily.
So even if you find places where list_head is the first member of a structure, it would be nice to explicitly use the list_head member and avoid casts IMO.
Thanks,
Nick
Quoted 21 lines
Signed-off-by Li Zefan <[email protected]>--- arch/ppc/syslib/ocp.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)arch/ppc/syslib/ocp.c +1
-1@@ -376,7 +376,7 @@ ocp_remove_one_device(unsigned int vendor, unsigned int function, int index)down_write (&ocp_devices_sem); dev =__ocp_find_device (vendor, function, index); -list_del ((struct list_head *)dev); +list_del (&dev->link);up_write (&ocp_devices_sem);DBG(("ocp:
ocp_remove_one_device(vendor: %x, function: %x, index: %d)...
done.\n", vendor, function, index));
Quoted 11 lines · Nick Piggin
Quoted 2 lines · Li Zefan
The casting is safe only when the
list_headmember is the first member of the structure.Even so, I don't think too safe :) It might technically work, but it could break more easily.
So even if you find places where
list_headis the first member of a structure, it would be nice to explicitly use thelist_headmember and avoid casts IMO.
This is exactly what I think. Those patches actually fix no bugs, but avoid this kind of technically and currently correct casting.
Quoted 24 lines
Quoted 22 lines
Signed-off-by Li Zefan <[email protected]>--- arch/ppc/syslib/ocp.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)arch/ppc/syslib/ocp.c +1
-1@@ -376,7 +376,7 @@ ocp_remove_one_device(unsigned int vendor, unsigned int function, int index)down_write (&ocp_devices_sem); dev =__ocp_find_device (vendor, function, index); -list_del ((struct list_head *)dev); +list_del (&dev->link);up_write (&ocp_devices_sem);DBG(("ocp:
ocp_remove_one_device(vendor: %x, function: %x, index: %d)...
done.\n", vendor, function, index));