From patchwork Thu Jun 25 19:02:57 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Beno=C3=AEt_Canet?= X-Patchwork-Id: 6677271 Return-Path: X-Original-To: patchwork-ceph-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id D90359F380 for ; Thu, 25 Jun 2015 19:03:03 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id F26FA2073D for ; Thu, 25 Jun 2015 19:03:02 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 1DF6A2073C for ; Thu, 25 Jun 2015 19:03:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751451AbbFYTC6 (ORCPT ); Thu, 25 Jun 2015 15:02:58 -0400 Received: from 28-113-190-109.dsl.ovh.fr ([109.190.113.28]:33573 "EHLO ariel" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751019AbbFYTC6 (ORCPT ); Thu, 25 Jun 2015 15:02:58 -0400 Received: from localhost.localdomain (localhost [127.0.0.1]) by ariel (Postfix) with ESMTP id 36F30AC013C; Thu, 25 Jun 2015 21:02:59 +0200 (CEST) From: =?UTF-8?q?Beno=C3=AEt=20Canet?= To: ceph-devel@vger.kernel.org Cc: idryomov@gmail.com, elder@ieee.org, =?UTF-8?q?Beno=C3=AEt=20Canet?= Subject: [PATCH v2] libceph: Avoid holding the zero page on ceph_msgr_slab_init errors Date: Thu, 25 Jun 2015 21:02:57 +0200 Message-Id: <1435258977-30890-1-git-send-email-benoit.canet@nodalink.com> X-Mailer: git-send-email 2.1.4 MIME-Version: 1.0 Sender: ceph-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: ceph-devel@vger.kernel.org X-Spam-Status: No, score=-8.3 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP ceph_msgr_slab_init may fail due to a temporary ENOMEM. Delay a bit the initialization of zero_page in ceph_msgr_init and reorder it's cleanup in _ceph_msgr_exit so it's done in reverse order of setup. BUG_ON() will not suffer to be postponed in case it is triggered. Signed-off-by: BenoƮt Canet Reviewed-by: Alex Elder --- net/ceph/messenger.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c index 38f06a4..ec68cd3 100644 --- a/net/ceph/messenger.c +++ b/net/ceph/messenger.c @@ -275,22 +275,22 @@ static void _ceph_msgr_exit(void) ceph_msgr_wq = NULL; } - ceph_msgr_slab_exit(); - BUG_ON(zero_page == NULL); page_cache_release(zero_page); zero_page = NULL; + + ceph_msgr_slab_exit(); } int ceph_msgr_init(void) { + if (ceph_msgr_slab_init()) + return -ENOMEM; + BUG_ON(zero_page != NULL); zero_page = ZERO_PAGE(0); page_cache_get(zero_page); - if (ceph_msgr_slab_init()) - return -ENOMEM; - /* * The number of active work items is limited by the number of * connections, so leave @max_active at default.