diff options
author | Jiayi Ye <yejiayily@gmail.com> | 2014-10-25 11:40:32 +0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-10-27 18:52:37 +0800 |
commit | 3247c4e5ef5d78b47bf2b223d2e684e77845431b (patch) | |
tree | f7f8921e55c84669105700613b230f739fdefd40 /drivers/staging/lustre | |
parent | 85b4260ddfed16b0069262a2a843fd59562a2ee2 (diff) | |
download | op-kernel-dev-3247c4e5ef5d78b47bf2b223d2e684e77845431b.zip op-kernel-dev-3247c4e5ef5d78b47bf2b223d2e684e77845431b.tar.gz |
staging: lustre: lnet: klnds: o2iblnd: fix null dereference on failed path in o2iblnd.c
If net is null and failed path is executed, dereference null may happen.
This patch fixes it. The following Coccinelle semantic patch was used.
@@
expression E, E1;
identifier f;
statement S1,S2,S3;
@@
* if (E == NULL)
{
... when != if (E == NULL) S1 else S2
when != E = E1
* E->f
... when any
return ...;
}
else S3
Signed-off-by: Jiayi Ye <yejiayily@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/lustre')
-rw-r--r-- | drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c index 045f2be..bc479a7 100644 --- a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c +++ b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c @@ -3081,7 +3081,7 @@ kiblnd_startup (lnet_ni_t *ni) LIBCFS_ALLOC(net, sizeof(*net)); ni->ni_data = net; if (net == NULL) - goto failed; + goto net_failed; do_gettimeofday(&tv); net->ibn_incarnation = (((__u64)tv.tv_sec) * 1000000) + tv.tv_usec; @@ -3147,6 +3147,7 @@ failed: if (net->ibn_dev == NULL && ibdev != NULL) kiblnd_destroy_dev(ibdev); +net_failed: kiblnd_shutdown(ni); CDEBUG(D_NET, "kiblnd_startup failed\n"); |