Commit 7e221b60 authored by James Simmons's avatar James Simmons Committed by Greg Kroah-Hartman

staging: lustre: lnet: revert commit 4671a0266

Commit 4671a0266 change the parameter of the second parameter of
cfs_precpt_alloc() from a sizeof type to sizeof type *pointer.
This was incorrect in this case and it caused a crash when the LNet
layer was brought up in my testing. The reason is cfs_precpt_alloc()
creates an array of items where the arrays size is equal to the
number of CPTs that exist. Changing to type *pointer only had
cfs_precpt_alloc() create an array of pointers instead of an array
of actual data structures. This patch reverse this change and adds
comments to explain what cfs_precpt_alloc() is actually doing to
avoid potential issues like this again.

Changelog:

v1) Simple revert of the original patch

v2) Added in comments to explain why cfs_precpt_alloc() has the
    arguments it uses.
Signed-off-by: default avatarJames Simmons <jsimmons@infradead.org>
Cc: Sandhya Bankar <bankarsandhya512@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 62d727c4
...@@ -1965,10 +1965,13 @@ static int kiblnd_net_init_pools(kib_net_t *net, __u32 *cpts, int ncpts) ...@@ -1965,10 +1965,13 @@ static int kiblnd_net_init_pools(kib_net_t *net, __u32 *cpts, int ncpts)
/* /*
* premapping can fail if ibd_nmr > 1, so we always create * premapping can fail if ibd_nmr > 1, so we always create
* FMR pool and map-on-demand if premapping failed * FMR pool and map-on-demand if premapping failed
*
* cfs_precpt_alloc is creating an array of struct kib_fmr_poolset
* The number of struct kib_fmr_poolsets create is equal to the
* number of CPTs that exist, i.e net->ibn_fmr_ps[cpt].
*/ */
net->ibn_fmr_ps = cfs_percpt_alloc(lnet_cpt_table(), net->ibn_fmr_ps = cfs_percpt_alloc(lnet_cpt_table(),
sizeof(*net->ibn_fmr_ps)); sizeof(kib_fmr_poolset_t));
if (!net->ibn_fmr_ps) { if (!net->ibn_fmr_ps) {
CERROR("Failed to allocate FMR pool array\n"); CERROR("Failed to allocate FMR pool array\n");
rc = -ENOMEM; rc = -ENOMEM;
...@@ -1991,8 +1994,13 @@ static int kiblnd_net_init_pools(kib_net_t *net, __u32 *cpts, int ncpts) ...@@ -1991,8 +1994,13 @@ static int kiblnd_net_init_pools(kib_net_t *net, __u32 *cpts, int ncpts)
LASSERT(i == ncpts); LASSERT(i == ncpts);
create_tx_pool: create_tx_pool:
/*
* cfs_precpt_alloc is creating an array of struct kib_tx_poolset
* The number of struct kib_tx_poolsets create is equal to the
* number of CPTs that exist, i.e net->ibn_tx_ps[cpt].
*/
net->ibn_tx_ps = cfs_percpt_alloc(lnet_cpt_table(), net->ibn_tx_ps = cfs_percpt_alloc(lnet_cpt_table(),
sizeof(*net->ibn_tx_ps)); sizeof(kib_tx_poolset_t));
if (!net->ibn_tx_ps) { if (!net->ibn_tx_ps) {
CERROR("Failed to allocate tx pool array\n"); CERROR("Failed to allocate tx pool array\n");
rc = -ENOMEM; rc = -ENOMEM;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment