Print this page
5253 kmem_alloc/kmem_zalloc won't fail with KM_SLEEP
5254 getrbuf won't fail with KM_SLEEP


 613 
 614 
 615 struct bitmapdata {
 616         uchar_t *data;
 617         size_t  len;
 618 };
 619 
 620 static int
 621 rdc_read_bitmap(rdc_k_info_t *krdc, struct bitmapdata *data)
 622 {
 623         rdc_u_info_t *urdc;
 624         int sts;
 625 
 626         if (krdc == NULL) {
 627                 return (-1);
 628         }
 629 
 630         if (data != NULL) {
 631                 data->data = kmem_alloc(krdc->bitmap_size, KM_SLEEP);
 632                 data->len = krdc->bitmap_size;
 633 
 634                 if (data->data == NULL) {
 635                         return (-1);
 636                 }
 637         }
 638 
 639         mutex_enter(&krdc->bmapmutex);
 640 
 641         urdc = &rdc_u_info[krdc->index];
 642         if (rdc_get_vflags(urdc) & RDC_BMP_FAILED) {
 643                 mutex_exit(&krdc->bmapmutex);
 644                 return (-1);
 645         }
 646 
 647         if (krdc->bitmapfd == NULL) {
 648                 mutex_exit(&krdc->bmapmutex);
 649                 return (-1);
 650         }
 651 
 652         if (data == NULL && krdc->dcio_bitmap == NULL) {
 653                 mutex_exit(&krdc->bmapmutex);
 654                 return (-1);
 655         }
 656 




 613 
 614 
 615 struct bitmapdata {
 616         uchar_t *data;
 617         size_t  len;
 618 };
 619 
 620 static int
 621 rdc_read_bitmap(rdc_k_info_t *krdc, struct bitmapdata *data)
 622 {
 623         rdc_u_info_t *urdc;
 624         int sts;
 625 
 626         if (krdc == NULL) {
 627                 return (-1);
 628         }
 629 
 630         if (data != NULL) {
 631                 data->data = kmem_alloc(krdc->bitmap_size, KM_SLEEP);
 632                 data->len = krdc->bitmap_size;




 633         }
 634 
 635         mutex_enter(&krdc->bmapmutex);
 636 
 637         urdc = &rdc_u_info[krdc->index];
 638         if (rdc_get_vflags(urdc) & RDC_BMP_FAILED) {
 639                 mutex_exit(&krdc->bmapmutex);
 640                 return (-1);
 641         }
 642 
 643         if (krdc->bitmapfd == NULL) {
 644                 mutex_exit(&krdc->bmapmutex);
 645                 return (-1);
 646         }
 647 
 648         if (data == NULL && krdc->dcio_bitmap == NULL) {
 649                 mutex_exit(&krdc->bmapmutex);
 650                 return (-1);
 651         }
 652