kfree on NULL pointer is a no-op.
This patch uses the following semantic patch to find such an instance
where NULL check is present before kfree.
// <smpl>
@@ expression E; @@
- if (E != NULL) { kfree(E); }
+ kfree(E);
@@ expression E; @@
- if (E != NULL) { kfree(E); E = NULL; }
+ kfree(E);
+ E = NULL;
// </smpl>smpl>
Signed-off-by: Shraddha Barke <[email protected]>
---
drivers/staging/wilc1000/linux_wlan.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/staging/wilc1000/linux_wlan.c b/drivers/staging/wilc1000/linux_wlan.c
index 3e55a8a..3dcd6e5 100644
--- a/drivers/staging/wilc1000/linux_wlan.c
+++ b/drivers/staging/wilc1000/linux_wlan.c
@@ -2343,8 +2343,7 @@ int mac_ioctl(struct net_device *ndev, struct ifreq *req, int cmd)
done:
- if (buff != NULL)
- kfree(buff);
+ kfree(buff);
return s32Error;
}
--
2.1.0
This patch does away with the cast on void * as it is unnecessary.
Semantic patch used is as follows:
@r@
expression x;
void* e;
type T;
identifier f;
@@
(
*((T *)e)
|
((T *)x)[...]
|
((T *)x)->f
|
- (void *)
e
)
Signed-off-by: Shraddha Barke <[email protected]>
---
drivers/staging/lustre/lustre/libcfs/module.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/staging/lustre/lustre/libcfs/module.c b/drivers/staging/lustre/lustre/libcfs/module.c
index 1ab4232..ef8f126 100644
--- a/drivers/staging/lustre/lustre/libcfs/module.c
+++ b/drivers/staging/lustre/lustre/libcfs/module.c
@@ -335,7 +335,7 @@ static int libcfs_ioctl(struct cfs_psdev_file *pfile, unsigned long cmd, void *a
return -ENOMEM;
/* 'cmd' and permissions get checked in our arch-specific caller */
- if (libcfs_ioctl_getdata(buf, buf + 800, (void *)arg)) {
+ if (libcfs_ioctl_getdata(buf, buf + 800, arg)) {
CERROR("PORTALS ioctl: data error\n");
err = -EINVAL;
goto out;
--
2.1.0
void pointers do not need to be cast to other pointer types.
The semantic patch used to find this:
@r@
expression x;
void* e;
type T;
identifier f;
@@
(
*((T *)e)
|
((T *)x)[...]
|
((T *)x)->f
|
- (T *)
e
)
Signed-off-by: Shraddha Barke <[email protected]>
---
drivers/staging/unisys/visorbus/visorbus_main.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/staging/unisys/visorbus/visorbus_main.c b/drivers/staging/unisys/visorbus/visorbus_main.c
index 403c13b..db4282f 100644
--- a/drivers/staging/unisys/visorbus/visorbus_main.c
+++ b/drivers/staging/unisys/visorbus/visorbus_main.c
@@ -677,7 +677,7 @@ unregister_driver_attributes(struct visor_driver *drv)
static void
dev_periodic_work(void *xdev)
{
- struct visor_device *dev = (struct visor_device *)xdev;
+ struct visor_device *dev = xdev;
struct visor_driver *drv = to_visor_driver(dev->device.driver);
down(&dev->visordriver_callback_lock);
--
2.1.0
On 2015/08/10, 2:00 AM, "Shraddha Barke" <[email protected]> wrote:
>kfree on NULL pointer is a no-op.
Hi, please don't CC the hpdd-discuss list, nor Oleg or I for patches
unrelated to Lustre.
Cheers, Andreas
>This patch uses the following semantic patch to find such an instance
>where NULL check is present before kfree.
>
>// <smpl>
>@@ expression E; @@
>- if (E != NULL) { kfree(E); }
>+ kfree(E);
>@@ expression E; @@
>- if (E != NULL) { kfree(E); E = NULL; }
>+ kfree(E);
>+ E = NULL;
>// </smpl>smpl>
>
>Signed-off-by: Shraddha Barke <[email protected]>
>---
> drivers/staging/wilc1000/linux_wlan.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
>diff --git a/drivers/staging/wilc1000/linux_wlan.c
>b/drivers/staging/wilc1000/linux_wlan.c
>index 3e55a8a..3dcd6e5 100644
>--- a/drivers/staging/wilc1000/linux_wlan.c
>+++ b/drivers/staging/wilc1000/linux_wlan.c
>@@ -2343,8 +2343,7 @@ int mac_ioctl(struct net_device *ndev, struct ifreq
>*req, int cmd)
>
> done:
>
>- if (buff != NULL)
>- kfree(buff);
>+ kfree(buff);
>
> return s32Error;
> }
>--
>2.1.0
>
>
Cheers, Andreas
--
Andreas Dilger
Lustre Software Architect
Intel High Performance Data Division