Received: by 10.192.165.148 with SMTP id m20csp3676339imm; Mon, 23 Apr 2018 10:23:26 -0700 (PDT) X-Google-Smtp-Source: AIpwx4/ltOlkcay4ojerOMn++w1/zPobVPRbRS4lfbOmvG33RnJUCscAABtsLx4NJUV5S+0CCZgS X-Received: by 10.98.208.195 with SMTP id p186mr20830308pfg.250.1524504206668; Mon, 23 Apr 2018 10:23:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524504206; cv=none; d=google.com; s=arc-20160816; b=v+b/YzGFtxaoEyVP6KbHlsS93eX03tm2lM6M+iLFNG6iP07gkFsbMzcrKAlmr4P4BV XMUhu4n9mZ5Xdfq9tZDCcExLtvYRHkIy8jtFa8E7jVtgoac1pCWf9KzfHbk6a9Aqi5kk WxRvFjib3VU5Js0aICMfmbDj9uJrkf75R9BcDzlYgX4XeSvLjAM63Br9IM3MoNKxTb3L Mb0J9AI3Hvf37S+Ipi/ps/Bxjie89yWk1tKTlsIGE9ZKrH+0pVRwJoU/ecLGoBbpJj7Z fBSWdBeslaPixkLNy5aqi7ae/Tyjx0AccwFXCelJHnr4T7yBWZ4Q24ILSsKroXsP8No8 pvaw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:smtp-origin-cluster:cc:to :smtp-origin-hostname:from:smtp-origin-hostprefix:dkim-signature :arc-authentication-results; bh=ONPIJHxe8wXFercierOjxkxvTqarNJIJYxBPtjfSK6M=; b=0LioT5Hl6ULoxi44gaQH6JwfThJsPURpUFViczmsGMrj3L0bSmyHNm15nbY3rnDWab stfh6u66PkFNh1mmDSfpYIySyoFb7YCiE7deB+Ze7slMev74FyZrdXzv1rUiRCMuX++d egB3MpnuMNmUF09fVpWZGzwo5gbEboTx3BBRkINlR8hiA5HaS5b6osVrRKSZTAhbkk7D j694vkdezu8tDEN0MJaF47/mdSRh/BWzRraVAX98KrT/zq6MOPSmJ/R9vnNdEDqclKik aSRF8OhjDTYW+iXPRgAvgieVBqc0KHAbeQgysLB/qEaZGOuLTqj84OveEBqi47mjTKfD 9Qgw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@fb.com header.s=facebook header.b=T5ZhXQUx; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=fb.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 1-v6si11939904plv.217.2018.04.23.10.23.12; Mon, 23 Apr 2018 10:23:26 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@fb.com header.s=facebook header.b=T5ZhXQUx; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=fb.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755858AbeDWRVw (ORCPT + 99 others); Mon, 23 Apr 2018 13:21:52 -0400 Received: from mx0a-00082601.pphosted.com ([67.231.145.42]:57286 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755800AbeDWRVp (ORCPT ); Mon, 23 Apr 2018 13:21:45 -0400 Received: from pps.filterd (m0044010.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w3NHKNSV030873 for ; Mon, 23 Apr 2018 10:21:44 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=facebook; bh=ONPIJHxe8wXFercierOjxkxvTqarNJIJYxBPtjfSK6M=; b=T5ZhXQUx76KID842XBIVMIUuydYeV2TjahVSoJB2TRyQfvmfSrdn6+RkdVYoX+RWej/0 l5Xu+7hkBOD2679bNFcR5vyJK9mHn6DWjzHmRw8L+cIJbpsc5mikChhUTD/dIRRWAw4Y sZdEIhvw8zHlwqmwsi7wqc7o+ygoen/B96I= Received: from mail.thefacebook.com ([199.201.64.23]) by mx0a-00082601.pphosted.com with ESMTP id 2hhhkhgf08-1 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT) for ; Mon, 23 Apr 2018 10:21:44 -0700 Received: from mx-out.facebook.com (192.168.52.123) by PRN-CHUB09.TheFacebook.com (192.168.16.19) with Microsoft SMTP Server id 14.3.361.1; Mon, 23 Apr 2018 10:21:40 -0700 Received: by devbig102.frc2.facebook.com (Postfix, from userid 4523) id 5B9A342821F9; Mon, 23 Apr 2018 10:21:40 -0700 (PDT) Smtp-Origin-Hostprefix: devbig From: Song Liu Smtp-Origin-Hostname: devbig102.frc2.facebook.com To: CC: , Song Liu , Steven Rostedt , Ingo Molnar , Howard McLauchlan , Josef Bacik , Srikar Dronamraju , Miklos Szeredi Smtp-Origin-Cluster: frc2c02 Subject: [PATCH v5 2/2] tracing: remove igrab() iput() call from uprobes.c Date: Mon, 23 Apr 2018 10:21:35 -0700 Message-ID: <20180423172135.4050588-2-songliubraving@fb.com> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20180423172135.4050588-1-songliubraving@fb.com> References: <20180423172135.4050588-1-songliubraving@fb.com> X-FB-Internal: Safe MIME-Version: 1.0 Content-Type: text/plain X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2018-04-23_06:,, signatures=0 X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Caller of uprobe_register is required to keep the inode and containing mount point referenced. There was misuse of igrab() in uprobes.c and trace_uprobe.c. This is because igrab() will not prevent umount of the containing mount point. To fix this, we added path to struct trace_uprobe, which keeps the inode and containing mount reference. For uprobes.c, it is not necessary to call igrab() in uprobe_register(), as the caller is required to keep the inode reference. The igrab() is removed and comments on this requirement is added to uprobe_register(). Link: http://lkml.kernel.org/r/CAELBmZB2XX=qEOLAdvGG4cPx4GEntcSnWQquJLUK1ongRj35cA@mail.gmail.com Cc: Steven Rostedt Cc: Ingo Molnar Cc: Howard McLauchlan Cc: Josef Bacik Cc: Srikar Dronamraju Cc: Miklos Szeredi Signed-off-by: Song Liu --- kernel/events/uprobes.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c index ce6848e..1725b90 100644 --- a/kernel/events/uprobes.c +++ b/kernel/events/uprobes.c @@ -491,7 +491,7 @@ static struct uprobe *alloc_uprobe(struct inode *inode, loff_t offset) if (!uprobe) return NULL; - uprobe->inode = igrab(inode); + uprobe->inode = inode; uprobe->offset = offset; init_rwsem(&uprobe->register_rwsem); init_rwsem(&uprobe->consumer_rwsem); @@ -502,7 +502,6 @@ static struct uprobe *alloc_uprobe(struct inode *inode, loff_t offset) if (cur_uprobe) { kfree(uprobe); uprobe = cur_uprobe; - iput(inode); } return uprobe; @@ -701,7 +700,6 @@ static void delete_uprobe(struct uprobe *uprobe) rb_erase(&uprobe->rb_node, &uprobes_tree); spin_unlock(&uprobes_treelock); RB_CLEAR_NODE(&uprobe->rb_node); /* for uprobe_is_active() */ - iput(uprobe->inode); put_uprobe(uprobe); } @@ -873,7 +871,8 @@ static void __uprobe_unregister(struct uprobe *uprobe, struct uprobe_consumer *u * tuple). Creation refcount stops uprobe_unregister from freeing the * @uprobe even before the register operation is complete. Creation * refcount is released when the last @uc for the @uprobe - * unregisters. + * unregisters. Caller of uprobe_register() is required to keep @inode + * (and the containing mount) referenced. * * Return errno if it cannot successully install probes * else return 0 (success) -- 2.9.5