amr.c (109031) | amr.c (109623) |
---|---|
1/*- 2 * Copyright (c) 1999,2000 Michael Smith 3 * Copyright (c) 2000 BSDi 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 39 unchanged lines hidden (view full) --- 48 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 49 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 50 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 51 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 52 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 53 * SUCH DAMAGE. 54 * 55 * | 1/*- 2 * Copyright (c) 1999,2000 Michael Smith 3 * Copyright (c) 2000 BSDi 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 39 unchanged lines hidden (view full) --- 48 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 49 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 50 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 51 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 52 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 53 * SUCH DAMAGE. 54 * 55 * |
56 * $FreeBSD: head/sys/dev/amr/amr.c 109031 2003-01-09 21:02:28Z emoore $ | 56 * $FreeBSD: head/sys/dev/amr/amr.c 109623 2003-01-21 08:56:16Z alfred $ |
57 */ 58 59/* 60 * Driver for the AMI MegaRaid family of controllers. 61 */ 62 63#include <sys/param.h> 64#include <sys/systm.h> --- 363 unchanged lines hidden (view full) --- 428 debug(1, "AMR_IO_VERSION"); 429 *arg = AMR_IO_VERSION_NUMBER; 430 break; 431 432 case AMR_IO_COMMAND: 433 debug(1, "AMR_IO_COMMAND 0x%x", au->au_cmd[0]); 434 /* handle inbound data buffer */ 435 if (au->au_length != 0) { | 57 */ 58 59/* 60 * Driver for the AMI MegaRaid family of controllers. 61 */ 62 63#include <sys/param.h> 64#include <sys/systm.h> --- 363 unchanged lines hidden (view full) --- 428 debug(1, "AMR_IO_VERSION"); 429 *arg = AMR_IO_VERSION_NUMBER; 430 break; 431 432 case AMR_IO_COMMAND: 433 debug(1, "AMR_IO_COMMAND 0x%x", au->au_cmd[0]); 434 /* handle inbound data buffer */ 435 if (au->au_length != 0) { |
436 if ((dp = malloc(au->au_length, M_DEVBUF, M_WAITOK)) == NULL) { | 436 if ((dp = malloc(au->au_length, M_DEVBUF, 0)) == NULL) { |
437 error = ENOMEM; 438 break; 439 } 440 if ((error = copyin(au->au_buffer, dp, au->au_length)) != 0) 441 break; 442 debug(2, "copyin %ld bytes from %p -> %p", au->au_length, au->au_buffer, dp); 443 } 444 445 if ((ac = amr_alloccmd(sc)) == NULL) { 446 error = ENOMEM; 447 break; 448 } 449 450 /* handle SCSI passthrough command */ 451 if (au->au_cmd[0] == AMR_CMD_PASS) { | 437 error = ENOMEM; 438 break; 439 } 440 if ((error = copyin(au->au_buffer, dp, au->au_length)) != 0) 441 break; 442 debug(2, "copyin %ld bytes from %p -> %p", au->au_length, au->au_buffer, dp); 443 } 444 445 if ((ac = amr_alloccmd(sc)) == NULL) { 446 error = ENOMEM; 447 break; 448 } 449 450 /* handle SCSI passthrough command */ 451 if (au->au_cmd[0] == AMR_CMD_PASS) { |
452 if ((ap = malloc(sizeof(*ap), M_DEVBUF, M_WAITOK | M_ZERO)) == NULL) { | 452 if ((ap = malloc(sizeof(*ap), M_DEVBUF, M_ZERO)) == NULL) { |
453 error = ENOMEM; 454 break; 455 } 456 457 /* copy cdb */ 458 ap->ap_cdb_length = au->au_cmd[2]; 459 bcopy(&au->au_cmd[3], &ap->ap_cdb[0], ap->ap_cdb_length); 460 --- 1358 unchanged lines hidden --- | 453 error = ENOMEM; 454 break; 455 } 456 457 /* copy cdb */ 458 ap->ap_cdb_length = au->au_cmd[2]; 459 bcopy(&au->au_cmd[3], &ap->ap_cdb[0], ap->ap_cdb_length); 460 --- 1358 unchanged lines hidden --- |