summaryrefslogtreecommitdiff
path: root/sys/src/9/port/devsd.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2015-03-06 16:16:45 +0100
committercinap_lenrek <cinap_lenrek@felloff.net>2015-03-06 16:16:45 +0100
commit374d4ec2c154cbec0094f124f2173b685adbabd5 (patch)
tree59e11e7381d0bbdada3c31b3c413a2a15ff006db /sys/src/9/port/devsd.c
parentfadbb92afaa7530121a13306aad4224692f1d6ee (diff)
devsd: always page align sd buffers
sdbio() tests if it can pass the buffer pointer directly to the driver when it is already in kernel memory. we also need to check if the buffer is properly aligned but alignment requirement is handled in system specific sdmalloc() and was not known to devsd. to solve this, we *always* page align sd buffers and get rid of the system specific sdmalloc() macro (was only used in bcm kernel).
Diffstat (limited to 'sys/src/9/port/devsd.c')
-rw-r--r--sys/src/9/port/devsd.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/src/9/port/devsd.c b/sys/src/9/port/devsd.c
index 6474a68f0..049338e90 100644
--- a/sys/src/9/port/devsd.c
+++ b/sys/src/9/port/devsd.c
@@ -843,7 +843,7 @@ sdbio(Chan* c, int write, char* a, long len, uvlong off)
len = nb*unit->secsize - offset;
hard = offset || write && len%unit->secsize;
- if(iskaddr(a) && !hard) {
+ if(iskaddr(a) && ((uintptr)a & (BY2PG-1))==0 && !hard) {
b = (uchar*)a;
allocd = 0;
}else{