diff options
Diffstat (limited to 'sys/dev/hptrr/hptrr_osm_bsd.c')
-rw-r--r-- | sys/dev/hptrr/hptrr_osm_bsd.c | 27 |
1 files changed, 9 insertions, 18 deletions
diff --git a/sys/dev/hptrr/hptrr_osm_bsd.c b/sys/dev/hptrr/hptrr_osm_bsd.c index 4208dd620e37..78a051d54cf8 100644 --- a/sys/dev/hptrr/hptrr_osm_bsd.c +++ b/sys/dev/hptrr/hptrr_osm_bsd.c @@ -144,9 +144,9 @@ static __inline void *__get_free_pages(int order) M_DEVBUF, M_WAITOK, BUS_SPACE_MAXADDR_24BIT, BUS_SPACE_MAXADDR, PAGE_SIZE, 0); } -static __inline void free_pages(void *p, int order) +static __inline void free_pages(void *p) { - contigfree(p, PAGE_SIZE<<order, M_DEVBUF); + free(p, M_DEVBUF); } static int hpt_alloc_mem(PVBUS_EXT vbus_ext) @@ -228,7 +228,7 @@ static void hpt_free_mem(PVBUS_EXT vbus_ext) for (i=0; i<os_max_cache_pages; i++) { p = dmapool_get_page((PVBUS)vbus_ext->vbus, &bus); HPT_ASSERT(p); - free_pages(p, 0); + free_pages(p); } for (f=vbus_ext->freelist_dma_head; f; f=f->next) { @@ -242,7 +242,7 @@ static void hpt_free_mem(PVBUS_EXT vbus_ext) while ((p=freelist_get_dma(f, &bus))) { if (order) - free_pages(p, order); + free_pages(p); else { /* can't free immediately since other blocks in this page may still be in the list */ if (((HPT_UPTR)p & (PAGE_SIZE-1))==0) @@ -252,7 +252,7 @@ static void hpt_free_mem(PVBUS_EXT vbus_ext) } while ((p = dmapool_get_page((PVBUS)vbus_ext->vbus, &bus))) - free_pages(p, 0); + free_pages(p); } static int hpt_init_vbus(PVBUS_EXT vbus_ext) @@ -463,7 +463,7 @@ static void os_cmddone(PCOMMAND pCmd) ccb->ccb_h.status = CAM_BUSY; break; default: - ccb->ccb_h.status = CAM_SCSI_STATUS_ERROR; + ccb->ccb_h.status = CAM_AUTOSENSE_FAIL; break; } @@ -557,7 +557,7 @@ static void hpt_scsi_io(PVBUS_EXT vbus_ext, union ccb *ccb) ccb->ccb_h.target_id >= osm_max_targets || (ccb->ccb_h.flags & CAM_CDB_PHYS)) { - ccb->ccb_h.status = CAM_TID_INVALID; + ccb->ccb_h.status = CAM_SEL_TIMEOUT; xpt_done(ccb); return; } @@ -1032,10 +1032,6 @@ static void hpt_final_init(void *dummy) for (i=0; i<os_max_queue_comm; i++) { POS_CMDEXT ext = (POS_CMDEXT)malloc(sizeof(OS_CMDEXT), M_DEVBUF, M_WAITOK); - if (!ext) { - os_printk("Can't alloc cmdext(%d)", i); - return ; - } ext->vbus_ext = vbus_ext; ext->next = vbus_ext->cmdext_list; vbus_ext->cmdext_list = ext; @@ -1252,19 +1248,14 @@ static int hpt_ioctl(struct cdev *dev, u_long cmd, caddr_t data, int fflag, stru if (ioctl_args.nInBufferSize) { ioctl_args.lpInBuffer = malloc(ioctl_args.nInBufferSize, M_DEVBUF, M_WAITOK); - if (!ioctl_args.lpInBuffer) - goto invalid; if (copyin((void*)piop->lpInBuffer, ioctl_args.lpInBuffer, piop->nInBufferSize)) goto invalid; } - if (ioctl_args.nOutBufferSize) { + if (ioctl_args.nOutBufferSize) ioctl_args.lpOutBuffer = malloc(ioctl_args.nOutBufferSize, M_DEVBUF, M_WAITOK | M_ZERO); - if (!ioctl_args.lpOutBuffer) - goto invalid; - } - + hpt_do_ioctl(&ioctl_args); if (ioctl_args.result==HPT_IOCTL_RESULT_OK) { |