tconInfoAlloc(void)
 {
        struct cifs_tcon *ret_buf;
-       ret_buf = kzalloc(sizeof(struct cifs_tcon), GFP_KERNEL);
-       if (ret_buf) {
-               atomic_inc(&tconInfoAllocCount);
-               ret_buf->tidStatus = CifsNew;
-               ++ret_buf->tc_count;
-               INIT_LIST_HEAD(&ret_buf->openFileList);
-               INIT_LIST_HEAD(&ret_buf->tcon_list);
-               spin_lock_init(&ret_buf->open_file_lock);
-               mutex_init(&ret_buf->crfid.fid_mutex);
-               ret_buf->crfid.fid = kzalloc(sizeof(struct cifs_fid),
-                                            GFP_KERNEL);
-               spin_lock_init(&ret_buf->stat_lock);
-               atomic_set(&ret_buf->num_local_opens, 0);
-               atomic_set(&ret_buf->num_remote_opens, 0);
+
+       ret_buf = kzalloc(sizeof(*ret_buf), GFP_KERNEL);
+       if (!ret_buf)
+               return NULL;
+       ret_buf->crfid.fid = kzalloc(sizeof(*ret_buf->crfid.fid), GFP_KERNEL);
+       if (!ret_buf->crfid.fid) {
+               kfree(ret_buf);
+               return NULL;
        }
+
+       atomic_inc(&tconInfoAllocCount);
+       ret_buf->tidStatus = CifsNew;
+       ++ret_buf->tc_count;
+       INIT_LIST_HEAD(&ret_buf->openFileList);
+       INIT_LIST_HEAD(&ret_buf->tcon_list);
+       spin_lock_init(&ret_buf->open_file_lock);
+       mutex_init(&ret_buf->crfid.fid_mutex);
+       spin_lock_init(&ret_buf->stat_lock);
+       atomic_set(&ret_buf->num_local_opens, 0);
+       atomic_set(&ret_buf->num_remote_opens, 0);
+
        return ret_buf;
 }