Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754142AbbFAWwc (ORCPT ); Mon, 1 Jun 2015 18:52:32 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:50125 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752852AbbFAWwY (ORCPT ); Mon, 1 Jun 2015 18:52:24 -0400 Date: Mon, 1 Jun 2015 15:52:23 -0700 From: Andrew Morton To: Davidlohr Bueso Cc: Manfred Spraul , linux-kernel@vger.kernel.org, Davidlohr Bueso Subject: Re: [PATCH 1/2] ipc,shm: move BUG_ON check into shm_lock Message-Id: <20150601155223.d919df461c92ff82e3fafd20@linux-foundation.org> In-Reply-To: <1432944186-7305-1-git-send-email-dave@stgolabs.net> References: <1432944186-7305-1-git-send-email-dave@stgolabs.net> X-Mailer: Sylpheed 3.4.1 (GTK+ 2.24.23; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1798 Lines: 70 On Fri, 29 May 2015 17:03:05 -0700 Davidlohr Bueso wrote: > Upon every shm_lock call, we BUG_ON if an error was returned, > indicating racing either in idr or in RMID. Move this logic > into the locking. > > ... > > --- a/ipc/shm.c > +++ b/ipc/shm.c > @@ -155,8 +155,14 @@ static inline struct shmid_kernel *shm_lock(struct ipc_namespace *ns, int id) > { > struct kern_ipc_perm *ipcp = ipc_lock(&shm_ids(ns), id); > > - if (IS_ERR(ipcp)) > + if (IS_ERR(ipcp)) { > + /* > + * We raced in the idr lookup or with RMID, > + * either way, the ID is busted. > + */ > + BUG_ON(1); > return (struct shmid_kernel *)ipcp; > + } > That's a bit odd. Why not --- a/ipc/shm.c~ipcshm-move-bug_on-check-into-shm_lock-fix-2 +++ a/ipc/shm.c @@ -160,7 +160,7 @@ static inline struct shmid_kernel *shm_l * We raced in the idr lookup or with RMID, * either way, the ID is busted. */ - BUG_ON(1); + BUG(); return (struct shmid_kernel *)ipcp; } and/or --- a/ipc/shm.c~ipcshm-move-bug_on-check-into-shm_lock-fix +++ a/ipc/shm.c @@ -155,14 +155,11 @@ static inline struct shmid_kernel *shm_l { struct kern_ipc_perm *ipcp = ipc_lock(&shm_ids(ns), id); - if (IS_ERR(ipcp)) { - /* - * We raced in the idr lookup or with RMID, - * either way, the ID is busted. - */ - BUG(); - return (struct shmid_kernel *)ipcp; - } + /* + * We raced in the idr lookup or with RMID. Either way, the ID is + * busted. + */ + BUG_ON(IS_ERR(ipcp)); return container_of(ipcp, struct shmid_kernel, shm_perm); } _ -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/