From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757433AbcHZCBe (ORCPT ); Thu, 25 Aug 2016 22:01:34 -0400 Received: from mail-ve1eur01on0119.outbound.protection.outlook.com ([104.47.1.119]:53184 "EHLO EUR01-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753979AbcHZCBb (ORCPT ); Thu, 25 Aug 2016 22:01:31 -0400 X-Greylist: delayed 21766 seconds by postgrey-1.27 at vger.kernel.org; Thu, 25 Aug 2016 22:01:31 EDT Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=dsafonov@virtuozzo.com; From: Dmitry Safonov To: , CC: , , , , <0x7f454c46@gmail.com>, , , , Dmitry Safonov Subject: [RFC 0/3] Put vdso in ramfs-like filesystem (vdsofs) Date: Thu, 25 Aug 2016 18:21:07 +0300 Message-ID: <20160825152110.25663-1-dsafonov@virtuozzo.com> X-Mailer: git-send-email 2.9.0 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [195.214.232.10] X-ClientProxiedBy: VI1PR06CA0038.eurprd06.prod.outlook.com (10.162.116.176) To AM5PR0801MB1729.eurprd08.prod.outlook.com (10.169.247.7) X-MS-Office365-Filtering-Correlation-Id: 28aca2c6-1d22-41c3-c531-08d3ccfbc252 X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1729;2:/eZ072lz0UBgbwednjGXPZKUMXjYmzLTLRmziKWcZ28ZHOPbE6RFmbtQxiaseV1aunoWOtSulMM6GimH6vTpyLmju+KgiN+yCnIjyf2L/Im4plGhKODMVsNNFA5moEMoWyz/NQPwREpuFnYSDNXV+J68nplUoSGwDN7prF/3/a3jbHYKy7YR2iYy2Vv7dCSC;3:JZIyi6AvTYJHJVbBuorJb9EUJwxlkaxMiFVrY2DoRW0LzqntNLACrMyoSOH2Ep5ZE5+m0L2gOSbgW6j2TlWORiGNNUzzUT29AFE5wWOdCUzzIA/uUouExVcSDN/u6zRA;25:od63qUXyocawDMnodsSMhH+yYmAWwPAsL51GI2hX3rbiyyJBcs1Eo/Paq3b2muHTHFOgH9eF0+YiO0BWtjyqdiKsxbzOV4AK64DcgzNXTLKR62PJ4L3ciufj6OJDZjULydYcZauAvJKHmEkxb+3Gica4u7gEcMRn9IfIMFG/ruPuekuuH0cMHSrBsCLEty9Ee7K7yn/oXfSEun0Bzea/3OIvT91FzD/EJ/TiV9N6NbN5CjRxOJ6GsEEnEcQqSv/lM1UjTBDHBp+0g1d6KPYC1xskHy5VtNZ5z4UwPOT5n250t7sZvDMKHuSWNggQbED22j1bWO3JPFy/q8/GysZ+c7Cs/kA+6xzeG+VXPJu0ZSTXOIm5dGvW/TS6nteDyMTK7pMsDm0fydWA7SYMfEbRWWcstJnivpKf18pQUjR0SVs= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:AM5PR0801MB1729; X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1729;31:VYNDjqTn4k8/jpEFxRew3cTUUiaoMXf5u6fTgeZjwMeKtaTKOmrsy1xoeCUI/tbjBvsHOdkQyaozFGQPvEkSsgGhvaE+6iZa0bYdCWUw5hjHAtUkeT5eTZM5gwpGvvpyO0n6bxujJTjjZ5MfAJXUOS9+9BcpvR+1BpOg2ZJDXRn1QfIR2X79exTmUt3kNAHNo2C/T+Fs50WF/FsUZXBPtR/NEobSM4MpAj3N44s2dOE=;4:iHJsYVC3bK4ABhGRTCZxlej9bIOCfU6u+b6l9Zl0YUdIG/sU0p92sEbllhfjkr80jXx8ZzZq6f+UOUu6N4+DJ84RVkls7ImQZD4FZXgTl8WOiTm9vc5TASC/qk1Tfy7PhmGgPPqdMG7pV2eTVwKghQVuGkvzp0gTDX0ThrlKXwW6Sn3s8oyhxEXuSdWLqLsWl/RGNk9QAJTooneXtCtq7Zke0c0t6wRfhAgGyuqSD3wfVbOXNtPgdebqb8XpU4w+C57u8iMDnfgNi0WzeF5lNG44bOjF0OcqXCMJ937iDWIpLtpnYVfadkaPCV0FYn+zhAaxvJ6SXmVWPXPe8UkfyLqop/n+Eyvgq8bxtpFq6tuMcu5cvWA4bduHYOvpjyMh4Of8s3pypwkmksffoGM8ym57ngOSK6vsq4NunNb8E/w= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6043046)(6042046);SRVR:AM5PR0801MB1729;BCL:0;PCL:0;RULEID:;SRVR:AM5PR0801MB1729; X-Forefront-PRVS: 0045236D47 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(7916002)(189002)(199003)(7846002)(81166006)(4326007)(189998001)(105586002)(50466002)(48376002)(33646002)(36756003)(19580405001)(8676002)(6116002)(97736004)(81156014)(2906002)(7416002)(15975445007)(1076002)(77096005)(50226002)(3846002)(19580395003)(5660300001)(305945005)(68736007)(101416001)(50986999)(86362001)(4001430100002)(7736002)(586003)(42186005)(575784001)(53416004)(69596002)(66066001)(5001770100001)(47776003)(107886002)(229853001)(92566002)(5003940100001)(106356001);DIR:OUT;SFP:1102;SCL:1;SRVR:AM5PR0801MB1729;H:dsafonov.sw.ru;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;AM5PR0801MB1729;23:jCf2izF9sQ+9vuSbzF/GdoSfNVbg1RUYw66ytcC?= =?us-ascii?Q?dleWejh7+2PR87Q3s1TN+epNCdFfI769Ni8T32SHQGRrsASb1+CYTgfxhW4Y?= =?us-ascii?Q?tBH3pEoFqcEdeQkTDqXRd3vL0SMmtv+LgCEDXAA5v7brmVb9DrOPH2YX9Uvs?= =?us-ascii?Q?PSNGoe9xUFwGcFvXqoQrHt/HTXveYLaPTqWvRvYC/qHLja3I8sZlPoOfGUH4?= =?us-ascii?Q?aqm/ElFnWJEzkAGSOCoVLN/OrKlA/ElHWyEXmS4k+xxOcZN918R1oLJ7QvAE?= =?us-ascii?Q?88fql0sZqACRsq5xXXG8qgRe0xdrOYuumkoXANEpJiD7qmiKUA1ZJsxwSDa5?= =?us-ascii?Q?KHrmz5GiSwWEoHvXj57/6rVYtCKyOvczxOkFs/gIhzuU02zCNm1UyLab6sew?= =?us-ascii?Q?aQqPe6qRu01cCC7Eve15tqK4Ecp+CShVhmiWKvK1cEybf/4sXLri6pGVh151?= =?us-ascii?Q?9DXUxzjKxn46f0FRfPutDaTeiUWlHhRQNFWysMEaNc7aJ/qvqSIuOGeMQPru?= =?us-ascii?Q?YvM1N9Sko7S/k0LiOT9tBnIbilkM/sFDz1pQc4kaFAujaBPZulRBhhGtQerS?= =?us-ascii?Q?amwdA5dQ/qFSCYSYEgfbfBlsJRiggdOWurDKoBwTcoLau6DOlTBTq2Hhm4qU?= =?us-ascii?Q?imbVKHtwBOQWebx9bx582e3MKm4riogJRBdawdntW6cngCqSNjRsZO9SufGd?= =?us-ascii?Q?+afp/TEADKDp5x1H4WHJrMtHfZLtGHoUvrKkHJgNrp+dIs3xuyoX0CIIZyBb?= =?us-ascii?Q?IC+Iqxd3l5jWKDmUjgVxAYhkUltHPRqqxiZJ07zjh9WREo9ei7KYGXtwIt6o?= =?us-ascii?Q?TDMHqvnWBnv7UBNWwA5rpwMUcUFehCgZTqRLI9WUTRS1mbm5NVG1jO1bchfW?= =?us-ascii?Q?mO7CY/mfIk2GS/c7Mon0aCyVVSUnfeP7cF18GZNLkCn00cQBqasCEJtKPkwk?= =?us-ascii?Q?N4AuqfxX63jjrQ5BXoz2Bc279DjN1XCIevvGuhNGi61LFhNfjKnAdZ8uAwgw?= =?us-ascii?Q?HM/HUNo10J8chbRN53A62toTyVQmBZiC0vFMBEcX9ET6mZA5kscnaUvvBuAm?= =?us-ascii?Q?075sTVjX1Ix1ibriU9830r0wV1G+a+CtHnENVsN/Aebk7s3YL1Fu3ERQ3H6c?= =?us-ascii?Q?0ky02qXoQyE0adEqVFN5Vq8R2LheZ4j+E21VmBkBWeePpYOsJJh0oLGiO+8s?= =?us-ascii?Q?0Xlqty4Bmx0rCtCUH7YhvZN8FbrqN+jdrO2NnCW7azlTHvrpL2L0wgqvZOA?= =?us-ascii?Q?=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1729;6:Jn7LJnIiCU4S3h/qd+AR84YJiEPTwpkEofJbGcMwASms90AeiotcZiJORHRlU3alw+fmFK7NkQETy3Oc6RJ3XsabuN0ea6VkoFL5+Nh0nx5yof6lEJfxgNp4u13RRn2P6cgyY2J5Q4rANQRzqYhZno/1xwDQiJkeAqV/DlZtxdL5Hdp4jnqdEErAA2CuegJ/qIPQ7ANeInYjNp6cTSrKc/jUMjWPT1dw5YyUT+id/qiVhk601a/wkgGRn/tSTNi6TsXFHaEhdkegN6AeRITa6SYPfD0wWITw8JrJr4R12NPUbyBwpJBNwQqM9RlKlZzP;5:mpRbQ9rBqZ7XeoOw1/4L+Gzj8HwrVgIUbKDRQXR4iNhkJUdVgHS1VwKdWy7G9S1aj9uTIL+PgK2PbeNUwbrruYNRVP8XhitrMvGoqN1Wm7OBsQu97mZuMEExf2LWECyj1z8KUslnqcMjUi9kzhUuAg==;24:2SJCBNaD8bOrpXlukTmPjEgpLzlm61RXsK6wM6SS5wvdoBurUxQRjH7UVfGpcNpVoFPB71GDsHUyjaItodbcirNEOXSh5mOILgxUJpqX6cw=;7:TLwNy38XwS1iqLHTCjfYIcpHF0fBusgz/PpZUxy4Lhcopjgf2KPqfixj0cfFmrwtJvYGN2Wxvhb+8GXOXvFPp6vecy7BzTBXw9BH0iKUiyHKDOSA9Xu2QL4crw5qRNhpwDXax4r5Fe4mWyZ7U1jKSl5+e+7UR2BXuxqZdeXnq3dezn3BTJ+Tvj5wtdVwic6/f6aIEUc8uf/znJhhFBQdOxT55fElhP4+BK3jq34Ok7o5qgaUpffGKeYpZOEOIO2O SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1729;20:klxIaysKzTxWOSX+z2S5y5C5kaWB7a6svvTHGZ9eaNJ2eOF+EVYr5BOBnLkK+2VE/GodGUCLW+QdoT9/BewOM2ro3hD+BARnSQwHXi/kJmzsWs3CRWLoI1yNkf4bkrCPbZUuela9ySqH7KOEgnm4UDHtMWSSrSlMvmA0dDFnt3U= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Aug 2016 15:23:24.3701 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB1729 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patches set is cleanly RFC and is not supposed to be applied. Also for RFC time it builds only on x86_64. So, in a mail thread Oleg told that it would be worth to introduce vm_file for vdso mappings as currently uprobes can not be placed on vDSO VMAs [1]. In this patches set I introduce in-kernel filesystem for vdso files. After patches vDSO VMA now has inode and is just a private file mapping: 7ffcc4b2b000-7ffcc4b2d000 r--p 00000000 00:00 0 [vvar] 7ffcc4b2d000-7ffcc4b2f000 r-xp 00000000 00:09 18 [vdso] Then I introduce interface in uprobe_events to insert uprobes in vdso. FWIW: [~]# cd kernel/linux [linux]# readelf --syms arch/x86/entry/vdso/vdso64.so Symbol table '.dynsym' contains 11 entries: Num: Value Size Type Bind Vis Ndx Name 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND 1: 0000000000000470 0 SECTION LOCAL DEFAULT 8 2: 00000000000008d0 885 FUNC WEAK DEFAULT 12 clock_gettime@@LINUX_2.6 3: 0000000000000c50 472 FUNC GLOBAL DEFAULT 12 __vdso_gettimeofday@@LINUX_2.6 4: 0000000000000c50 472 FUNC WEAK DEFAULT 12 gettimeofday@@LINUX_2.6 5: 0000000000000e30 21 FUNC GLOBAL DEFAULT 12 __vdso_time@@LINUX_2.6 6: 0000000000000e30 21 FUNC WEAK DEFAULT 12 time@@LINUX_2.6 7: 00000000000008d0 885 FUNC GLOBAL DEFAULT 12 __vdso_clock_gettime@@LINUX_2.6 8: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS LINUX_2.6 9: 0000000000000e50 41 FUNC GLOBAL DEFAULT 12 __vdso_getcpu@@LINUX_2.6 10: 0000000000000e50 41 FUNC WEAK DEFAULT 12 getcpu@@LINUX_2.6 [~]# cd /sys/kernel/debug/tracing/ [tracing]# echo 'p:clock_gettime :vdso:/64:0x8d0' > uprobe_events [tracing]# echo 'p:gettimeofday :vdso:/64:0xc50' >> uprobe_events [tracing]# echo 'p:time :vdso:/64:0xe30' >> uprobe_events [tracing]# echo 1 > events/uprobes/enable [tracing]# su test # it has UID=1001 [tracing]$ date Thu Aug 25 17:19:29 MSK 2016 [tracing]$ exit [tracing]# cat trace # tracer: nop # # entries-in-buffer/entries-written: 175/175 #P:4 # # _-----=> irqs-off # / _----=> need-resched # | / _---=> hardirq/softirq # || / _--=> preempt-depth # ||| / delay # TASK-PID CPU# |||| TIMESTAMP FUNCTION # | | | |||| | | bash-11560 [001] d... 316.470236: time: (0x7ffcacebae30) bash-11560 [001] d... 316.471436: gettimeofday: (0x7ffcacebac50) bash-11560 [001] d... 316.477550: time: (0x7ffcacebae30) bash-11560 [001] d... 316.477655: time: (0x7ffcacebae30) mktemp-11568 [001] d... 316.479589: gettimeofday: (0x7ffc603f0c50) date-11571 [001] d... 316.481890: clock_gettime: (0x7ffec9db58d0) [...] If this approach will be decided as fine, I will prepare a better version, fixing the following things: o put vdsofs in generic fs/* dir o support other archs and vdso blobs o remove BUG_ON()'s and UID==1001 check o remove extern's and use headers only o refactor code in create_trace_uprobe() o add some state to (struct trace_uprobe), so i.e., `cat uprobe_events` will print those uprobes as vdso-based o document this interface in Documentation/trace/uprobetracer.txt o prepare nice patches set? So, opinions? Is it worth to add something like this? [1]: https://lkml.org/lkml/2016/7/12/346 Dmitry Safonov (3): x86/vdso: create vdso file, use it for mapping uprobe: drop isdigit() check in create_trace_uprobe uprobe: add vdso support Cc: Oleg Nesterov Cc: Al Viro Cc: Steven Rostedt Cc: Andy Lutomirski Cc: Thomas Gleixner Cc: Ingo Molnar Cc: "H. Peter Anvin" Cc: x86@kernel.org Cc: Dmitry Safonov <0x7f454c46@gmail.com> arch/x86/entry/vdso/vma.c | 148 ++++++++++++++++++++++++++++++++++++++++++-- kernel/trace/trace_uprobe.c | 50 +++++++++++---- 2 files changed, 180 insertions(+), 18 deletions(-) -- 2.9.0