From: linux@audioscience.com
To: patch@alsa-project.org
Cc: Eliot Blennerhassett <eblennerhassett@audioscience.com>,
alsa-devel@alsa-project.org
Subject: [PATCH - asihpi 4/6] Mem buffer alloc inside adapter mutex.
Date: Fri, 22 Aug 2008 17:26:31 +1200 [thread overview]
Message-ID: <1219382793-21272-1-git-send-email-linux@audioscience.com> (raw)
From: Eliot Blennerhassett <eblennerhassett@audioscience.com>
Signed-off-by: Eliot Blennerhassett <eblennerhassett@audioscience.com>
diff --git a/pci/asihpi/hpioctl.c b/pci/asihpi/hpioctl.c
index 8222178..cf7c702 100644
--- a/pci/asihpi/hpioctl.c
+++ b/pci/asihpi/hpioctl.c
@@ -139,7 +139,20 @@ long asihpi_hpi_ioctl(
pa = &adapters[hm.wAdapterIndex];
hr.wSize = 0;
if (hm.wObject == HPI_OBJ_SUBSYSTEM) {
- HPI_MessageF(&hm, &hr, file);
+ switch (hm.wFunction) {
+ case HPI_SUBSYS_CREATE_ADAPTER:
+ case HPI_SUBSYS_DELETE_ADAPTER:
+ /* Application must not use these functions! */
+ hr.wSize = sizeof(struct hpi_response_header);
+ hr.wError = HPI_ERROR_INVALID_OPERATION;
+ hr.wFunction = hm.wFunction;
+ uncopied_bytes = copy_to_user(phr, &hr, hr.wSize);
+ if (uncopied_bytes)
+ return -EFAULT;
+ return 0;
+ default:
+ HPI_MessageF(&hm, &hr, file);
+ }
} else {
u16 __user *ptr = NULL;
u32 size = 0;
@@ -164,16 +177,6 @@ long asihpi_hpi_ioctl(
/* Dig out any pointers embedded in the message. */
switch (hm.wFunction) {
- case HPI_SUBSYS_CREATE_ADAPTER:
- case HPI_SUBSYS_DELETE_ADAPTER:
- /* Application must not use these functions! */
- hr.wSize = sizeof(struct hpi_response_header);
- hr.wError = HPI_ERROR_INVALID_OPERATION;
- hr.wFunction = hm.wFunction;
- uncopied_bytes = copy_to_user(phr, &hr, hr.wSize);
- if (uncopied_bytes)
- return -EFAULT;
- return 0;
case HPI_OSTREAM_WRITE:
case HPI_ISTREAM_READ:
/* Yes, sparse, this is correct. */
@@ -202,6 +205,9 @@ long asihpi_hpi_ioctl(
"HPI could not allocate "
"stream buffer size %d\n",
size);
+
+ mutex_unlock(&adapters[nAdapter].
+ mutex);
return -EINVAL;
}
@@ -216,10 +222,11 @@ long asihpi_hpi_ioctl(
break;
default:
+ size = 0;
break;
}
- if (wrflag == 0) {
+ if (size && (wrflag == 0)) {
uncopied_bytes =
copy_from_user(pa->pBuffer, ptr, size);
if (uncopied_bytes)
@@ -231,7 +238,7 @@ long asihpi_hpi_ioctl(
HPI_MessageF(&hm, &hr, file);
- if (wrflag == 1) {
+ if (size && (wrflag == 1)) {
uncopied_bytes = copy_to_user(ptr, pa->pBuffer, size);
if (uncopied_bytes)
HPI_DEBUG_LOG(WARNING,
--
1.5.4.3
next reply other threads:[~2008-08-22 5:26 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-22 5:26 linux [this message]
2008-08-22 5:26 ` [PATCH - asihpi 5/6] Avoid null pointer dereference linux
2008-08-22 5:26 ` [PATCH - asihpi 6/6] Return from timer func if XRUN. Avoids read/write of reset stream linux
2008-08-22 6:46 ` [PATCH - asihpi 4/6] Mem buffer alloc inside adapter mutex Takashi Iwai
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=1219382793-21272-1-git-send-email-linux@audioscience.com \
--to=linux@audioscience.com \
--cc=alsa-devel@alsa-project.org \
--cc=eblennerhassett@audioscience.com \
--cc=patch@alsa-project.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox