From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933800AbcLSQse (ORCPT ); Mon, 19 Dec 2016 11:48:34 -0500 Received: from mail-yb0-f195.google.com ([209.85.213.195]:34738 "EHLO mail-yb0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932199AbcLSQsb (ORCPT ); Mon, 19 Dec 2016 11:48:31 -0500 MIME-Version: 1.0 In-Reply-To: References: <20161217010045.GA140343@beast> From: Bruce Korb Date: Mon, 19 Dec 2016 08:47:50 -0800 Message-ID: Subject: Re: [PATCH] staging: lustre: ldlm: use designated initializers To: James Simmons Cc: Kees Cook , Linux Kernel Mailing List , Oleg Drokin , Andreas Dilger , Greg Kroah-Hartman , "John L. Hammond" , Emoly Liu , Vitaly Fertman , Bruno Faccini , Lustre Development List , devel@driverdev.osuosl.org Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Dec 19, 2016 at 8:22 AM, James Simmons >> --- a/drivers/staging/lustre/lustre/ldlm/ldlm_flock.c >> +++ b/drivers/staging/lustre/lustre/ldlm/ldlm_flock.c >> @@ -143,7 +143,7 @@ static int ldlm_process_flock_lock(struct ldlm_lock *req, __u64 *flags, >> int added = (mode == LCK_NL); >> int overlaps = 0; >> int splitted = 0; >> - const struct ldlm_callback_suite null_cbs = { NULL }; >> + const struct ldlm_callback_suite null_cbs = { }; >> >> CDEBUG(D_DLMTRACE, >> "flags %#llx owner %llu pid %u mode %u start %llu end %llu\n", > > Nak. Filling null_cbs with random data is a bad idea. If you look at > ldlm_lock_create() where this is used you have > > if (cbs) { > lock->l_blocking_ast = cbs->lcs_blocking; > lock->l_completion_ast = cbs->lcs_completion; > lock->l_glimpse_ast = cbs->lcs_glimpse; > } > > Having lock->l_* point to random addresses is a bad idea. > What really needs to be done is proper initialization of that > structure. A bunch of patches will be coming to address this. I'm not understanding the effect of the original difference. If you specify any initializer, then all fields not specified are filled with zero bits. Any pointers are, perforce, NULL. That should make both "{ NULL }" and "{}" equivalent. Maybe a worthwhile change would be to: static const struct ldlm_callback_suite null_cbs; then it is not even necessary to specify an initializer. From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bruce Korb Date: Mon, 19 Dec 2016 16:48:31 -0000 Subject: [lustre-devel] [PATCH] staging: lustre: ldlm: use designated initializers In-Reply-To: References: <20161217010045.GA140343@beast> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: James Simmons Cc: Kees Cook , Linux Kernel Mailing List , Oleg Drokin , Andreas Dilger , Greg Kroah-Hartman , "John L. Hammond" , Emoly Liu , Vitaly Fertman , Bruno Faccini , Lustre Development List , devel@driverdev.osuosl.org On Mon, Dec 19, 2016 at 8:22 AM, James Simmons >> --- a/drivers/staging/lustre/lustre/ldlm/ldlm_flock.c >> +++ b/drivers/staging/lustre/lustre/ldlm/ldlm_flock.c >> @@ -143,7 +143,7 @@ static int ldlm_process_flock_lock(struct ldlm_lock *req, __u64 *flags, >> int added = (mode == LCK_NL); >> int overlaps = 0; >> int splitted = 0; >> - const struct ldlm_callback_suite null_cbs = { NULL }; >> + const struct ldlm_callback_suite null_cbs = { }; >> >> CDEBUG(D_DLMTRACE, >> "flags %#llx owner %llu pid %u mode %u start %llu end %llu\n", > > Nak. Filling null_cbs with random data is a bad idea. If you look at > ldlm_lock_create() where this is used you have > > if (cbs) { > lock->l_blocking_ast = cbs->lcs_blocking; > lock->l_completion_ast = cbs->lcs_completion; > lock->l_glimpse_ast = cbs->lcs_glimpse; > } > > Having lock->l_* point to random addresses is a bad idea. > What really needs to be done is proper initialization of that > structure. A bunch of patches will be coming to address this. I'm not understanding the effect of the original difference. If you specify any initializer, then all fields not specified are filled with zero bits. Any pointers are, perforce, NULL. That should make both "{ NULL }" and "{}" equivalent. Maybe a worthwhile change would be to: static const struct ldlm_callback_suite null_cbs; then it is not even necessary to specify an initializer.