platform: standardise the offset checks for raw, and use BLKMASK
authorAlan Cox <alan@linux.intel.com>
Sat, 21 Feb 2015 00:34:17 +0000 (00:34 +0000)
committerAlan Cox <alan@linux.intel.com>
Sat, 21 Feb 2015 00:34:17 +0000 (00:34 +0000)
16 files changed:
Kernel/platform-6502test/devrd.c
Kernel/platform-6809test/devrd.c
Kernel/platform-8086test/devrd.c
Kernel/platform-msx1/devfd.c
Kernel/platform-msx1/devhd.c
Kernel/platform-msx2/devfd.c
Kernel/platform-msx2/devhd.c
Kernel/platform-mtx/devsil.c
Kernel/platform-nc100/devrd.c
Kernel/platform-px4plus/devfd.c
Kernel/platform-tgl6502/devrd.c
Kernel/platform-trs80/devfd.c
Kernel/platform-trs80/devhd.c
Kernel/platform-zx128/devbeta.c
Kernel/platform-zx128/devfd.c
Kernel/platform-zx128/devmdv.c

index ddbf8b3..bd3e7fd 100644 (file)
@@ -21,7 +21,7 @@ static int rd_transfer(bool is_read, uint8_t rawflag)
     if(rawflag) {
         dlen = udata.u_count;
         dptr = (uint16_t)udata.u_base;
-        if (dptr & 0x1FF) {
+        if (((uint16_t)udata.u_offset|dptr) & BLKMASK) {
             udata.u_error = EIO;
             return -1;
         }
index ddbf8b3..70f4fc3 100644 (file)
@@ -21,7 +21,7 @@ static int rd_transfer(bool is_read, uint8_t rawflag)
     if(rawflag) {
         dlen = udata.u_count;
         dptr = (uint16_t)udata.u_base;
-        if (dptr & 0x1FF) {
+        if (((uint16_t)dptr | dlen) & BLKMASK) {
             udata.u_error = EIO;
             return -1;
         }
index ddbf8b3..f74f0a5 100644 (file)
@@ -17,11 +17,10 @@ static int rd_transfer(bool is_read, uint8_t rawflag)
     int ct = 0;
     int map;
 
-    /* FIXME: raw is broken unless nicely aligned */
     if(rawflag) {
         dlen = udata.u_count;
         dptr = (uint16_t)udata.u_base;
-        if (dptr & 0x1FF) {
+        if (((uint16_t)dptr|dlen) & BLKMASK) {
             udata.u_error = EIO;
             return -1;
         }
index e3db971..afd21d2 100644 (file)
@@ -23,7 +23,7 @@ static int fd_transfer(bool is_read, uint8_t rawflag)
     if(rawflag) {
         dlen = udata.u_count;
         dptr = (uint16_t)udata.u_base;
-        if (dptr & 0x1FF) {
+        if (((uint16_t)dptr|dlen) & BLKMASK) {
             udata.u_error = EIO;
             return -1;
         }
index 16530fa..7b0d0c6 100644 (file)
@@ -23,7 +23,7 @@ static int hd_transfer(bool is_read, uint8_t rawflag)
     if(rawflag) {
         dlen = udata.u_count;
         dptr = (uint16_t)udata.u_base;
-        if (dptr & 0x1FF) {
+        if (((uint16_t)dptr | dlen) & BLKMASK) {
             udata.u_error = EIO;
             return -1;
         }
index e3db971..afd21d2 100644 (file)
@@ -23,7 +23,7 @@ static int fd_transfer(bool is_read, uint8_t rawflag)
     if(rawflag) {
         dlen = udata.u_count;
         dptr = (uint16_t)udata.u_base;
-        if (dptr & 0x1FF) {
+        if (((uint16_t)dptr|dlen) & BLKMASK) {
             udata.u_error = EIO;
             return -1;
         }
index 16530fa..7b0d0c6 100644 (file)
@@ -23,7 +23,7 @@ static int hd_transfer(bool is_read, uint8_t rawflag)
     if(rawflag) {
         dlen = udata.u_count;
         dptr = (uint16_t)udata.u_base;
-        if (dptr & 0x1FF) {
+        if (((uint16_t)dptr | dlen) & BLKMASK) {
             udata.u_error = EIO;
             return -1;
         }
index 3f6e97f..5b432f1 100644 (file)
@@ -23,7 +23,7 @@ static int sil_transfer(uint8_t minor, bool is_read, uint8_t rawflag)
     if(rawflag) {
         dlen = udata.u_count;
         dptr = (uint16_t)udata.u_base;
-        if (dptr & 0x1FF) {
+        if (((uint16_t)dptr | dlen) & BLKMASK) {
             udata.u_error = EIO;
             return -1;
         }
index 9f399f7..dd12fe3 100644 (file)
@@ -20,7 +20,7 @@ static int rd_transfer(bool is_read, uint8_t rawflag)
     if(rawflag) {
         dlen = udata.u_count;
         dptr = (uint16_t)udata.u_base;
-        if ((dlen|udata.u_offset) & 0x1FF) {
+        if ((dlen|udata.u_offset) & BLKMASK) {
             udata.u_error = EIO;
             return -1;
         }
index 5d5fd01..e6778dc 100644 (file)
@@ -61,7 +61,7 @@ static int hd_transfer(bool is_read, uint8_t minor, uint8_t rawflag)
         ramd_uaddr = (uint16_t)udata.u_base;
         ramd_off = udata.u_offset << 1;
         /* Should check this higher up ? */
-        if ((ramd_size & 0x1FF) || (ramd_off & 0x1FF))
+        if (((uint16_t)ramd_size | ramd_off) & BLKMASK)
             return -EIO;
     } else if (rawflag == 2) {         /* Swap device special */
         ramd_size = swapcnt << 9;
index ab3662b..3928e91 100644 (file)
@@ -29,7 +29,7 @@ static int rd_transfer(bool is_read, uint8_t rawflag)
         dlen = udata.u_count;
         dptr = (uint16_t)udata.u_base;
         /* Must be block aligned but otherwise we are happy */
-        if ((udata.u_offset|dlen) & 0x1FF) {
+        if (((uint16_t)udata.u_offset|dlen) & BLKMASK) {
             udata.u_error = EIO;
             return -1;
         }
index 057c78f..fabd834 100644 (file)
@@ -55,7 +55,7 @@ static int fd_transfer(uint8_t minor, bool is_read, uint8_t rawflag)
         block = udata.u_buf->bf_blk;
         nblock = 2;
     } else {
-        if ((udata.u_offset|udata.u_count) & 0x1FF)
+        if (((uint16_t)udata.u_offset|udata.u_count) & BLKMASK)
             goto bad2;
         dptr = (uint16_t)udata.u_base;
         block = udata.u_offset >> 9;
index 8ac2009..0ba5533 100644 (file)
@@ -76,7 +76,7 @@ int hd_transfer(uint8_t minor, bool is_read, uint8_t rawflag)
                nblock = 2;
                hd_page = 0;            /* Kernel */
        } else if (rawflag == 1) {
-               if ((udata.u_offset|udata.u_count) & 0x1FF)
+               if (((uint16_t)udata.u_offset|udata.u_count) & BLKMASK)
                        goto bad2;
                dptr = (uint16_t)udata.u_base;
                nblock = udata.u_count >> 9;
index bc531c3..910dbd6 100644 (file)
@@ -46,7 +46,7 @@ static int beta_transfer(uint8_t minor, bool is_read, uint8_t rawflag)
         block = udata.u_buf->bf_blk;
         betacount = 2;
     } else {
-        if ((udata.u_offset|udata.u_count) & 0x1FF)
+        if (((uint16_t)udata.u_offset|udata.u_count) & BLKMASK)
             goto bad2;
         betaaddr = (uint16_t)udata.u_base;
         block = udata.u_offset >> 9;
index a4407a0..dcd2b7a 100644 (file)
@@ -49,7 +49,7 @@ static int fd_transfer(uint8_t minor, bool is_read, uint8_t rawflag)
         block = udata.u_buf->bf_blk;
         nblock = 1;
     } else {
-        if ((udata.u_offset|udata.u_count) & 0x1FF)
+        if (((uint16_t)udata.u_offset|udata.u_count) & BLKMASK)
             goto bad2;
         dptr = (uint16_t)udata.u_base;
         block = udata.u_offset >> 9;
index 73533c4..167b84b 100644 (file)
@@ -38,7 +38,7 @@ static int mdv_transfer(uint8_t minor, bool is_read, uint8_t rawflag)
                mdv_page = 0;
        } else {
                /* Direct to user */
-               if ((udata.u_offset|udata.u_count) & 0x1FF)
+               if (((uint16_t)udata.u_offset|udata.u_count) & BLKMASK)
                        goto bad;
                mdv_buf = (uint8_t *)udata.u_buf->bf_blk;
                nblock = udata.u_count >> 9;