@@ -5339,7 +5339,7 @@ static int ublk_ctrl_reg_buf(struct ublk_device *ub,
53395339{
53405340 void __user * argp = (void __user * )(unsigned long )header -> addr ;
53415341 struct ublk_shmem_buf_reg buf_reg ;
5342- unsigned long addr , size , nr_pages ;
5342+ unsigned long nr_pages ;
53435343 struct page * * pages = NULL ;
53445344 unsigned int gup_flags ;
53455345 unsigned int memflags ;
@@ -5361,14 +5361,12 @@ static int ublk_ctrl_reg_buf(struct ublk_device *ub,
53615361 if (buf_reg .reserved )
53625362 return - EINVAL ;
53635363
5364- addr = buf_reg .addr ;
5365- size = buf_reg .len ;
5366- nr_pages = size >> PAGE_SHIFT ;
5367-
5368- if (!size || size > UBLK_SHMEM_BUF_SIZE_MAX ||
5369- !PAGE_ALIGNED (size ) || !PAGE_ALIGNED (addr ))
5364+ if (!buf_reg .len || buf_reg .len > UBLK_SHMEM_BUF_SIZE_MAX ||
5365+ !PAGE_ALIGNED (buf_reg .len ) || !PAGE_ALIGNED (buf_reg .addr ))
53705366 return - EINVAL ;
53715367
5368+ nr_pages = buf_reg .len >> PAGE_SHIFT ;
5369+
53725370 /* Pin pages before any locks (may sleep) */
53735371 pages = kvmalloc_array (nr_pages , sizeof (* pages ), GFP_KERNEL );
53745372 if (!pages )
@@ -5378,7 +5376,7 @@ static int ublk_ctrl_reg_buf(struct ublk_device *ub,
53785376 if (!(buf_reg .flags & UBLK_SHMEM_BUF_READ_ONLY ))
53795377 gup_flags |= FOLL_WRITE ;
53805378
5381- pinned = pin_user_pages_fast (addr , nr_pages , gup_flags , pages );
5379+ pinned = pin_user_pages_fast (buf_reg . addr , nr_pages , gup_flags , pages );
53825380 if (pinned < 0 ) {
53835381 ret = pinned ;
53845382 goto err_free_pages ;
0 commit comments