Message ID | 1419275109-11641-1-git-send-email-fabf@skynet.be (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Mon, 22 Dec 2014 20:05:09 +0100 Fabian Frederick <fabf@skynet.be> wrote: > sizeof(char) is always 1. > > ... > > --- a/fs/ocfs2/journal.c > +++ b/fs/ocfs2/journal.c > @@ -129,8 +129,8 @@ int ocfs2_compute_replay_slots(struct ocfs2_super *osb) > if (osb->replay_map) > return 0; > > - replay_map = kzalloc(sizeof(struct ocfs2_replay_map) + > - (osb->max_slots * sizeof(char)), GFP_KERNEL); > + replay_map = kzalloc(sizeof(struct ocfs2_replay_map) + osb->max_slots, > + GFP_KERNEL); > > if (!replay_map) { > mlog_errno(-ENOMEM); I dunno. The code at present isn't particularly idiomatic, but it has some documentation value and says "I know what I'm doing". It would be better if it was kzalloc(sizeof(struct ocfs2_replay_map) * sizeof(struct ocfs2_replay_map.rm_replay_slots[0]), ...); And it would be better if C permitted that ;) kzalloc(sizeof(struct ocfs2_replay_map) * sizeof((struct ocfs2_replay_map *)0)->rm_replay_slots[0]), ...); yuk.
On Mon, Dec 22 2014, Andrew Morton <akpm@linux-foundation.org> wrote: > On Mon, 22 Dec 2014 20:05:09 +0100 Fabian Frederick <fabf@skynet.be> wrote: > >> >> - replay_map = kzalloc(sizeof(struct ocfs2_replay_map) + >> - (osb->max_slots * sizeof(char)), GFP_KERNEL); >> + replay_map = kzalloc(sizeof(struct ocfs2_replay_map) + osb->max_slots, >> + GFP_KERNEL); >> > > I dunno. The code at present isn't particularly idiomatic, but it has > some documentation value and says "I know what I'm doing". > > It would be better if it was > > kzalloc(sizeof(struct ocfs2_replay_map) * > sizeof(struct ocfs2_replay_map.rm_replay_slots[0]), ...); > > And it would be better if C permitted that ;) > > kzalloc(sizeof(struct ocfs2_replay_map) * > sizeof((struct ocfs2_replay_map *)0)->rm_replay_slots[0]), ...); > > yuk. Well, the yuckiness could be hidden behind FIELD_SIZEOF. CodingStyle explicitly mentions that macro. No opinion on whether it's worth it in this case. Rasmus
diff --git a/fs/ocfs2/journal.c b/fs/ocfs2/journal.c index e238bbc..750597c 100644 --- a/fs/ocfs2/journal.c +++ b/fs/ocfs2/journal.c @@ -129,8 +129,8 @@ int ocfs2_compute_replay_slots(struct ocfs2_super *osb) if (osb->replay_map) return 0; - replay_map = kzalloc(sizeof(struct ocfs2_replay_map) + - (osb->max_slots * sizeof(char)), GFP_KERNEL); + replay_map = kzalloc(sizeof(struct ocfs2_replay_map) + osb->max_slots, + GFP_KERNEL); if (!replay_map) { mlog_errno(-ENOMEM);
sizeof(char) is always 1. Suggested-by: Joe Perches <joe@perches.com> Signed-off-by: Fabian Frederick <fabf@skynet.be> --- fs/ocfs2/journal.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)