Deleted Added
full compact
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 ---