diff -bw -N -c -r rr232x-linux-src-v1.10/osm/linux/osm_linux.c rr232x-linux-src-v1.10-minimal/osm/linux/osm_linux.c *** rr232x-linux-src-v1.10/osm/linux/osm_linux.c 2009-07-16 02:28:28.000000000 +0100 --- rr232x-linux-src-v1.10-minimal/osm/linux/osm_linux.c 2009-11-19 21:24:50.000000000 +0000 *************** *** 1949,1956 **** ioctl_arg.lpOutBuffer=buff+sizeof(IDE_PASS_THROUGH_HEADER); if ( ide_passthrough_header.protocol==IO_COMMAND_WRITE && copydata ) { ! if ( hpt_verify_area(VERIFY_READ, (void *)(HPT_UPTR)(arg+40), copydata) ! ||copy_from_user(buff+sizeof(IDE_PASS_THROUGH_HEADER), arg+40, copydata) ) { KdPrint(("Got bad user address")); goto invalid; } --- 1949,1956 ---- ioctl_arg.lpOutBuffer=buff+sizeof(IDE_PASS_THROUGH_HEADER); if ( ide_passthrough_header.protocol==IO_COMMAND_WRITE && copydata ) { ! if ( hpt_verify_area(VERIFY_READ, (void *)(HPT_UPTR)(arg+48), copydata) ! ||copy_from_user(buff+sizeof(IDE_PASS_THROUGH_HEADER), arg+48, copydata) ) { KdPrint(("Got bad user address")); goto invalid; } *************** *** 1962,1968 **** switch (cmd){ case 0x031d: if (copy_to_user(arg, buff+sizeof(IDE_PASS_THROUGH_HEADER)+7, 1) || ! copy_to_user(arg+1, buff+sizeof(IDE_PASS_THROUGH_HEADER)+1, 6) ) goto invalid; break; case 0x031f: --- 1962,1969 ---- switch (cmd){ case 0x031d: if (copy_to_user(arg, buff+sizeof(IDE_PASS_THROUGH_HEADER)+7, 1) || ! copy_to_user(arg+1, buff+sizeof(IDE_PASS_THROUGH_HEADER)+1, 6) || ! copy_to_user(arg, buff+sizeof(IDE_PASS_THROUGH_HEADER), sizeof(IDE_PASS_THROUGH_HEADER)) ) // necessary for returning TASKFILE status field goto invalid; break; case 0x031f: