From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id B634FC07CA9 for ; Sun, 26 Nov 2023 03:05:13 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 216846B0419; Sat, 25 Nov 2023 22:05:13 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 1A01C6B041B; Sat, 25 Nov 2023 22:05:13 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0418A6B041C; Sat, 25 Nov 2023 22:05:12 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id E52566B0419 for ; Sat, 25 Nov 2023 22:05:12 -0500 (EST) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id C196E8057C for ; Sun, 26 Nov 2023 03:05:12 +0000 (UTC) X-FDA: 81498614064.17.2E5A0BB Received: from out162-62-57-252.mail.qq.com (out162-62-57-252.mail.qq.com [162.62.57.252]) by imf11.hostedemail.com (Postfix) with ESMTP id 41F5340004 for ; Sun, 26 Nov 2023 03:05:09 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=foxmail.com header.s=s201512 header.b=bK+n7mPw; spf=pass (imf11.hostedemail.com: domain of rtoax@foxmail.com designates 162.62.57.252 as permitted sender) smtp.mailfrom=rtoax@foxmail.com; dmarc=pass (policy=none) header.from=foxmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1700967911; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=OJTiWNg24k+s2OI5Z/otgF76TPhxPTLD1e1T9SDhp1o=; b=NZzgmKyw9GOul/9pq3dLnDMo9+nWiTcT3fTG2DHJwvCgSm6W/5WkVZSoxP+0HcSrfalupX eIupr+Dv4ACRj+5wZJ2RqwlMwAET1ZgNWbTmhirvPYrQD8l+41Xt/9BOfjwmZps56lBQsq SycSgf3z8oxhvRUmXAxg7btM2RBK2yo= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1700967911; a=rsa-sha256; cv=none; b=SEu+SvTvzWffwxAMj25KuwI6cFFJlsKfWugtJSCboEPcw/2TSwYxuaiCJidLyxFEk7oh6F ca10Ha+uzZDgdkTeSm3vrkNAnw6r/be3EEdWIGWTYHX07RIeg4BiMWlus/8vhKZYoZzLzB RhrRg059kyIZbKEibQS6eAz9yPP2vLU= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=foxmail.com header.s=s201512 header.b=bK+n7mPw; spf=pass (imf11.hostedemail.com: domain of rtoax@foxmail.com designates 162.62.57.252 as permitted sender) smtp.mailfrom=rtoax@foxmail.com; dmarc=pass (policy=none) header.from=foxmail.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1700967896; bh=OJTiWNg24k+s2OI5Z/otgF76TPhxPTLD1e1T9SDhp1o=; h=Date:Subject:To:Cc:References:From:In-Reply-To; b=bK+n7mPwNDxerWr9vspeXyzsdCkMKQxIgEQEJZQttDRrAZiH6lqbrlb2yBDtnV9jM qivwdFTMKi+LtQRmbEzshV6Hddim40Hs0HLRXqBvygb1cr1qxJ1FWGd1IBV93WzVcY evpkvsijM/Ts6pmn66GlavSTQwPUzCMk254vstfQ= Received: from [192.168.10.134] ([120.245.114.155]) by newxmesmtplogicsvrszb6-0.qq.com (NewEsmtp) with SMTP id 134B303E; Sun, 26 Nov 2023 11:04:52 +0800 X-QQ-mid: xmsmtpt1700967892ta0h25e8b Message-ID: X-QQ-XMAILINFO: N+tZcXNNUKPOwN8ITHEbltotrVgPHmWay8jHZCPMsYuUhxvbYPYsq8+m7SFO4R 9Q4ML9nmyxGfx9lpccBVw4GaiOU6e+ovEHWk80+2QTmXTH9T43Py+nxoUXrVG1C9wtVkd5GXuWzI /zM6THSQrnTq5aFfdttH+qJBVrWZiTMt9Z8yqrd7qaeMyzmDJkYegK1nNdIKMPCAKU6a0Wz+Lcyd nL2ScPcDpDylzQtU8m8Dt9zEhmcaO/+l0Ui4Q1v+6Uw/jwSgbjiYZ9ezXdBL05MqA2KL6Twgt+n2 btL1jJ8zxnDSNCFYOfb7RZ9eLs06c9Cthy8ROVIQRkDUFHwZtOLoY1h83Agzuj/7oFMOyE18BJg8 gh+LwVCpYMIOPOuKDaJ1xCblrlf8rPfNcWG3fzgGiscP/wY8V2gopQfKeIhDINLnAJ3m+/opyzC5 ojjEf5OX10+EqAVvtPYFXlAMnWk+c6ACMgv4UEQMGk89E51y5XPLzMWUO82Ak6sohfBb0Igyt1hD ewHznwvf3ixQR4i/35BZPXU3a0cK6q90JevKZBBar/duK/HHCS+SlVG2ZEaZrzOnQ1hFrAMPSKKy kt/gf8vVS5f06R1vHrSd5WxOi1xLV1fr9KoGlA3au9kGzXc2TybJLev/R9Vry0C66tKYH1yKCuut 6sHA6v78W5jEZwudCy1XnTjOe9Td2PFc2VMW9vnYjSY9nM92o+R9b68lObHtDFCg9o6+LYPpouov uTxkG3UTajZQ86VWPhOOWK6MseT/ET034Cqw8O9qV4CrFBZA6svPOEARSfvvzmbYktmeGrbMJF9x qDiufXUKwb1h4X75RQhR5SN2I5kmfZhvn4HJk9VeQcN+nOS9QmFtAz6ivD/bWhu0WFjTEbSIkwdg 7mSfiwgKdV/LTLwnTxGE4Qp49gUyvTPBhIp4MigkKbMWawsVR2g5ybvtuhFn/kYbtkifXuwc1WFf a6RRLPaG2CuiVq2rRTkrqytN7Gcs+n8oDQKwbfwzzCOcABYTwhsbDr8gHSxsiq62tMHOObTcI= X-QQ-XMRINFO: OWPUhxQsoeAVDbp3OJHYyFg= X-OQ-MSGID: Date: Sun, 26 Nov 2023 11:04:52 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] prctl: Get private anonymous memory region name To: Oleg Nesterov Cc: Andrew Morton , Catalin Marinas , Florent Revest , Kees Cook , David Hildenbrand , Stefan Roesch , Andy Chiu , Josh Triplett , Joey Gouly , Miguel Ojeda , Ondrej Mosnacek , "open list:MEMORY MANAGEMENT" , open list , rongtao@cestc.cn References: <20231125155651.GA23245@redhat.com> Content-Language: en-US From: Rong Tao In-Reply-To: <20231125155651.GA23245@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Stat-Signature: z8qmn8mrtxgx6uq8qopf3qtj31zyxyjq X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 41F5340004 X-Rspam-User: X-HE-Tag: 1700967909-954639 X-HE-Meta: U2FsdGVkX18lsV+eZuQzU27xXPdhA25mp+h2HMIVkkxfUq8dim3GcWSyhM709EenCiYn++rEfdJH1RmjTQ273Y5BkOWLpO4qtHWvgk3dFirMyGcOhNG1z46xeaWTdxiymt/DbERe6ctnHS5a5u8PmvIy0zY45OJitFdG0LlsMAPX4iMlofmNNwPRB08DCpsMoRUGk9VHVXNul6rMy4xllbXKMzMg/KJKniZ1sIMy+OVe53rQf0eyQ3AJG3398Qrd7mfKM4xgC947Uo067ha52oP6A27gYUJkaSMUb3x7Gx3xgZgGif85xxby9nU0tn++BYS5crJUA4GqY7idZjyMSLmpNFiUhhEC3svgOb+A4xg6BQaGJ7APo+H4IsFo1Y3VGDhoiZP6EgrkmSWYgAgMF8jQyoSTsmnPyl6kva9XMxXyccXTQ07kx5tEYOdOlLJBfHpzNwJ/fkVIAQLRob3ti98ltDOc6h4dne+QWtiAvjNYNnz4fQfpuwxBC5TESEhCCQX8fGHj3BhFViqoTp9CZBw6NSRwpgFOwEFvo/LVqon1lOWesVSNZXTuMaqiY4g8eguDgmTOUOwnCAtWd+co6kAmhoBTnrlSsG10mjeeVv6PO36+6aw3XYupNpNvELX5rtTPEPPuZje3ATfJ+6I+RqhNploNcKIQjx6Rj540pUDW4DFTrv/RaCmUgJwm2hGkNg25TiriD5UoPruxsuFNMQZcjha0vp26a9jU1y/tDto9KkSTB6UPbCQS69mlHwhfURT1u0AFFY+mvnlgtD7QVKbJUyy3BiOe/Tjtyff9lgBX7NeVi1wJ0mSGR1OOMf1gJBkzySrUt+LiXKr/Wc2PgK29D2CdzRxefz/okQPbLp0mWFa03Ymo7Zfhy7MynsrI5TvwayBxCGlmCZ9ieHPDIf7P9M/LB8XmRS9epd7f/RGgbXBHpxaF15/wBHNnkQa5JiE7S0sG3rSM8Q48uY9 ipyS3PWr in/MtEdYc7Brwa/23wMyX0EsJWfUMYQcRO2KVgn06PpC/bqBYeqN1iNU1mGSpR+ZHUp1sJyXJz1qu0Vu8n5Uoa0qguaOckFADq/0Yr/iyqdybnOEaWTBz8OKhSiDWxq79DZJ7HEoZWu8fTikBc+IdNc/TKReSjJyDSyalw3dNp+0F3vyPKoV7WopyF0okSyL8CBLpQ8QSsE1yv6mo95qP0pz+qHEW/XppA0pSNtfAoFJmIUFji/v5opajU06K+uqZRRf3hbqytgIJT6A= X-Bogosity: Ham, tests=bogofilter, spamicity=0.002182, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On 11/25/23 23:56, Oleg Nesterov wrote: > On 11/25, Rong Tao wrote: >> +static int prctl_get_vma(unsigned long opt, unsigned long addr, >> + unsigned long buf, unsigned long arg) >> +{ >> + struct mm_struct *mm = current->mm; >> + const char __user *u_buf; >> + int error; >> + >> + switch (opt) { >> + case PR_GET_VMA_ANON_NAME: >> + const struct anon_vma_name *anon_name = NULL; >> + >> + u_buf = (const char __user *)buf; >> + error = 0; >> + >> + mmap_read_lock(mm); >> + anon_name = madvise_get_anon_name(mm, addr); >> + if (!anon_name) { >> + mmap_read_unlock(mm); >> + error = -EFAULT; > may be another error code makes sense to distinguish this case from > the copy_to_user() failure? > >> + break; >> + } >> + >> + if (copy_to_user((char __user *)u_buf, anon_name->name, >> + strlen(anon_name->name) + 1)) >> + error = -EFAULT; > and I guess you can simplify this code a bit, > > anon_name = madvise_get_anon_name(...); > if (!anon_name || copy_to_user(...)) > error = -EFAULT; Thanks a lot, I just modify the code, please review. > > mmap_read_unlock(mm); > anon_vma_name_put(anon_name); // safe if anon_name == NULL; > >> +const struct anon_vma_name *madvise_get_anon_name(struct mm_struct *mm, >> + unsigned long start) >> +{ >> + struct vm_area_struct *vma; >> + struct anon_vma_name *anon_name; >> + >> + vma = find_vma(mm, start); >> + if (vma) { >> + anon_name = anon_vma_name(vma); >> + if (anon_name) { >> + anon_vma_name_get(anon_name); >> + return anon_name; >> + } >> + } >> + >> + return NULL; > Again, afaics this can be simplified, > > struct anon_vma_name *anon_name = NULL; > > vma = find_vma(mm, start); > if (vma) { > anon_name = anon_vma_name(vma); > anon_vma_name_get(anon_name); > } > > return anon_name; > > Oleg. Thanks again. Rong Tao >