forked from luck/tmp_suning_uos_patched
ocfs2/dlm: use struct_size() helper
One of the more common cases of allocation size calculations is finding the size of a structure that has a zero-sized array at the end, along with memory for some number of elements for that array. For example: struct dlm_migratable_lockres { ... struct dlm_migratable_lock ml[0]; // 16 bytes each, begins at byte 112 }; Make use of the struct_size() helper instead of an open-coded version in order to avoid any potential type mistakes. So, replace the following form: sizeof(struct dlm_migratable_lockres) + (mres->num_locks * sizeof(struct dlm_migratable_lock)) with: struct_size(mres, ml, mres->num_locks) Notice that, in this case, variable sz is not necessary, hence it is removed. This code was detected with the help of Coccinelle. Link: http://lkml.kernel.org/r/20190605204926.GA24467@embeddedor Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com> Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com> Cc: Mark Fasheh <mark@fasheh.com> Cc: Joel Becker <jlbec@evilplan.org> Cc: Junxiao Bi <junxiao.bi@oracle.com> Cc: Changwei Ge <gechangwei@live.cn> Cc: Gang He <ghe@suse.com> Cc: Jun Piao <piaojun@huawei.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
e926d8a1e8
commit
0e71666b8b
|
@ -1109,7 +1109,7 @@ static int dlm_send_mig_lockres_msg(struct dlm_ctxt *dlm,
|
|||
{
|
||||
u64 mig_cookie = be64_to_cpu(mres->mig_cookie);
|
||||
int mres_total_locks = be32_to_cpu(mres->total_locks);
|
||||
int sz, ret = 0, status = 0;
|
||||
int ret = 0, status = 0;
|
||||
u8 orig_flags = mres->flags,
|
||||
orig_master = mres->master;
|
||||
|
||||
|
@ -1117,9 +1117,6 @@ static int dlm_send_mig_lockres_msg(struct dlm_ctxt *dlm,
|
|||
if (!mres->num_locks)
|
||||
return 0;
|
||||
|
||||
sz = sizeof(struct dlm_migratable_lockres) +
|
||||
(mres->num_locks * sizeof(struct dlm_migratable_lock));
|
||||
|
||||
/* add an all-done flag if we reached the last lock */
|
||||
orig_flags = mres->flags;
|
||||
BUG_ON(total_locks > mres_total_locks);
|
||||
|
@ -1133,7 +1130,8 @@ static int dlm_send_mig_lockres_msg(struct dlm_ctxt *dlm,
|
|||
|
||||
/* send it */
|
||||
ret = o2net_send_message(DLM_MIG_LOCKRES_MSG, dlm->key, mres,
|
||||
sz, send_to, &status);
|
||||
struct_size(mres, ml, mres->num_locks),
|
||||
send_to, &status);
|
||||
if (ret < 0) {
|
||||
/* XXX: negative status is not handled.
|
||||
* this will end up killing this node. */
|
||||
|
|
Loading…
Reference in New Issue
Block a user