|
|
|
@ -536,7 +536,6 @@ static int dasd_eer_open(struct inode *inp, struct file *filp) |
|
|
|
|
eerb = kzalloc(sizeof(struct eerbuffer), GFP_KERNEL); |
|
|
|
|
if (!eerb) |
|
|
|
|
return -ENOMEM; |
|
|
|
|
lock_kernel(); |
|
|
|
|
eerb->buffer_page_count = eer_pages; |
|
|
|
|
if (eerb->buffer_page_count < 1 || |
|
|
|
|
eerb->buffer_page_count > INT_MAX / PAGE_SIZE) { |
|
|
|
@ -544,7 +543,6 @@ static int dasd_eer_open(struct inode *inp, struct file *filp) |
|
|
|
|
DBF_EVENT(DBF_WARNING, "can't open device since module " |
|
|
|
|
"parameter eer_pages is smaller than 1 or" |
|
|
|
|
" bigger than %d", (int)(INT_MAX / PAGE_SIZE)); |
|
|
|
|
unlock_kernel(); |
|
|
|
|
return -EINVAL; |
|
|
|
|
} |
|
|
|
|
eerb->buffersize = eerb->buffer_page_count * PAGE_SIZE; |
|
|
|
@ -552,14 +550,12 @@ static int dasd_eer_open(struct inode *inp, struct file *filp) |
|
|
|
|
GFP_KERNEL); |
|
|
|
|
if (!eerb->buffer) { |
|
|
|
|
kfree(eerb); |
|
|
|
|
unlock_kernel(); |
|
|
|
|
return -ENOMEM; |
|
|
|
|
} |
|
|
|
|
if (dasd_eer_allocate_buffer_pages(eerb->buffer, |
|
|
|
|
eerb->buffer_page_count)) { |
|
|
|
|
kfree(eerb->buffer); |
|
|
|
|
kfree(eerb); |
|
|
|
|
unlock_kernel(); |
|
|
|
|
return -ENOMEM; |
|
|
|
|
} |
|
|
|
|
filp->private_data = eerb; |
|
|
|
@ -567,7 +563,6 @@ static int dasd_eer_open(struct inode *inp, struct file *filp) |
|
|
|
|
list_add(&eerb->list, &bufferlist); |
|
|
|
|
spin_unlock_irqrestore(&bufferlock, flags); |
|
|
|
|
|
|
|
|
|
unlock_kernel(); |
|
|
|
|
return nonseekable_open(inp,filp); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|