diff --git a/drivers/staging/rtl8712/rtl871x_ioctl_linux.c b/drivers/staging/rtl8712/rtl871x_ioctl_linux.c index 3d6e818a7cc2..e30a5be5f318 100644 --- a/drivers/staging/rtl8712/rtl871x_ioctl_linux.c +++ b/drivers/staging/rtl8712/rtl871x_ioctl_linux.c @@ -1965,13 +1965,12 @@ static int r871x_get_ap_info(struct net_device *dev, break; } pdata->flags = 0; - if (pdata->length >= 32) { - if (copy_from_user(data, pdata->pointer, 32)) - return -EINVAL; - data[32] = 0; - } else { + if (pdata->length < 32) return -EINVAL; - } + if (copy_from_user(data, pdata->pointer, 32)) + return -EINVAL; + data[32] = 0; + spin_lock_irqsave(&(pmlmepriv->scanned_queue.lock), irqL); phead = &queue->queue; plist = phead->next;