From: Dan Carpenter <dan.carpenter@oracle.com>
To: Shankar Brahadeeswaran <shankoo77@gmail.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
linux-kernel@vger.kernel.org, devel@driverdev.osuosl.org,
Cruz Julian Bishop <cruzjbishop@gmail.com>,
Andrew Morton <akpm@linux-foundation.org>,
Hugh Dickins <hughd@google.com>,
Konstantin Khlebnikov <khlebnikov@openvz.org>
Subject: Re: [PATCH V2 1/1] staging: android: ashmem: get_name,set_name not to hold ashmem_mutex
Date: Wed, 20 Feb 2013 17:48:53 +0300 [thread overview]
Message-ID: <20130220144853.GE9189@mwanda> (raw)
In-Reply-To: <1361370428-30632-2-git-send-email-shankoo77@gmail.com>
On Wed, Feb 20, 2013 at 07:57:08PM +0530, Shankar Brahadeeswaran wrote:
> --- a/drivers/staging/android/ashmem.c
> +++ b/drivers/staging/android/ashmem.c
> @@ -413,50 +413,66 @@ out:
>
> static int set_name(struct ashmem_area *asma, void __user *name)
> {
> - int ret = 0;
> -
> - mutex_lock(&ashmem_mutex);
> + char local_name[ASHMEM_NAME_LEN];
>
> /* cannot change an existing mapping's name */
> - if (unlikely(asma->file)) {
> - ret = -EINVAL;
> - goto out;
> - }
> + if (unlikely(asma->file))
> + return -EINVAL;
Gar. No. Sorry I wasn't paying attention properly last time. This
isn't right but I didn't explain things properly from the beginning.
When you drop a lock, obviously the first thing I'm going to look at
is if it introduces race conditions. The problem is that checking
asma->file has to be done under lock and also we can't drop the lock
before we set the name. Otherwise someone could set asma->file
while we were waiting for the copy to complete.
It should be something like this:
char local_name[ASHMEM_NAME_LEN];
int ret = 0;
if (copy_from_user(local_name, name, ASHMEM_NAME_LEN))
return -EFAULT;
local_name[ASHMEM_FULL_NAME_LEN - 1] = '\0';
mutex_lock(&ashmem_mutex);
if (asma->file) {
ret = -EINVAL;
goto out;
}
memcpy(asma->name + ASHMEM_NAME_PREFIX_LEN, local_name,
ASHMEM_NAME_LEN);
out:
mutex_unlock(&ashmem_mutex);
return ret;
(I removed some calls to likely/unlikely() because putting those
around copy_from_user() is probably not going to speed anything up.)
Sorry, again for the miscommunication.
regards,
dan carpenter
next prev parent reply other threads:[~2013-02-20 14:49 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-02-20 12:23 [PATCH 1/1] staging: android: ashmem: get_name,set_name not to hold ashmem_mutex Shankar Brahadeeswaran
2013-02-20 12:23 ` Shankar Brahadeeswaran
2013-02-20 12:31 ` Dan Carpenter
2013-02-20 14:27 ` [PATCH V2 " Shankar Brahadeeswaran
2013-02-20 14:27 ` Shankar Brahadeeswaran
2013-02-20 14:48 ` Dan Carpenter [this message]
2013-02-20 18:11 ` [PATCH V3 1/1] staging: android: ashmem: get_name,set_name not to Shankar Brahadeeswaran
2013-02-20 18:11 ` [PATCH V3 1/1] staging: android: ashmem: get_name,set_name not to hold ashmem_mutex Shankar Brahadeeswaran
2013-02-20 19:24 ` Dan Carpenter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130220144853.GE9189@mwanda \
--to=dan.carpenter@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=cruzjbishop@gmail.com \
--cc=devel@driverdev.osuosl.org \
--cc=gregkh@linuxfoundation.org \
--cc=hughd@google.com \
--cc=khlebnikov@openvz.org \
--cc=linux-kernel@vger.kernel.org \
--cc=shankoo77@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.