aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/libertas/debugfs.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/libertas/debugfs.c')
-rw-r--r--drivers/net/wireless/libertas/debugfs.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/drivers/net/wireless/libertas/debugfs.c b/drivers/net/wireless/libertas/debugfs.c
index 893a55ca344a..8a7e9319c9e5 100644
--- a/drivers/net/wireless/libertas/debugfs.c
+++ b/drivers/net/wireless/libertas/debugfs.c
@@ -117,6 +117,11 @@ static ssize_t lbs_sleepparams_write(struct file *file,
117 if (!buf) 117 if (!buf)
118 return -ENOMEM; 118 return -ENOMEM;
119 119
120 if (!lbs_is_cmd_allowed(priv)) {
121 ret = -EBUSY;
122 goto out_unlock;
123 }
124
120 buf_size = min(count, len - 1); 125 buf_size = min(count, len - 1);
121 if (copy_from_user(buf, user_buf, buf_size)) { 126 if (copy_from_user(buf, user_buf, buf_size)) {
122 ret = -EFAULT; 127 ret = -EFAULT;
@@ -157,6 +162,11 @@ static ssize_t lbs_sleepparams_read(struct file *file, char __user *userbuf,
157 if (!buf) 162 if (!buf)
158 return -ENOMEM; 163 return -ENOMEM;
159 164
165 if (!lbs_is_cmd_allowed(priv)) {
166 ret = -EBUSY;
167 goto out_unlock;
168 }
169
160 ret = lbs_cmd_802_11_sleep_params(priv, CMD_ACT_GET, &sp); 170 ret = lbs_cmd_802_11_sleep_params(priv, CMD_ACT_GET, &sp);
161 if (ret) 171 if (ret)
162 goto out_unlock; 172 goto out_unlock;
@@ -223,6 +233,9 @@ static ssize_t lbs_threshold_read(uint16_t tlv_type, uint16_t event_mask,
223 u8 freq; 233 u8 freq;
224 int events = 0; 234 int events = 0;
225 235
236 if (!lbs_is_cmd_allowed(priv))
237 return -EBUSY;
238
226 buf = (char *)get_zeroed_page(GFP_KERNEL); 239 buf = (char *)get_zeroed_page(GFP_KERNEL);
227 if (!buf) 240 if (!buf)
228 return -ENOMEM; 241 return -ENOMEM;
@@ -275,6 +288,9 @@ static ssize_t lbs_threshold_write(uint16_t tlv_type, uint16_t event_mask,
275 char *buf; 288 char *buf;
276 int ret; 289 int ret;
277 290
291 if (!lbs_is_cmd_allowed(priv))
292 return -EBUSY;
293
278 buf = (char *)get_zeroed_page(GFP_KERNEL); 294 buf = (char *)get_zeroed_page(GFP_KERNEL);
279 if (!buf) 295 if (!buf)
280 return -ENOMEM; 296 return -ENOMEM;
@@ -444,6 +460,11 @@ static ssize_t lbs_rdmac_read(struct file *file, char __user *userbuf,
444 if (!buf) 460 if (!buf)
445 return -ENOMEM; 461 return -ENOMEM;
446 462
463 if (!lbs_is_cmd_allowed(priv)) {
464 free_page(addr);
465 return -EBUSY;
466 }
467
447 offval.offset = priv->mac_offset; 468 offval.offset = priv->mac_offset;
448 offval.value = 0; 469 offval.value = 0;
449 470
@@ -496,6 +517,11 @@ static ssize_t lbs_wrmac_write(struct file *file,
496 if (!buf) 517 if (!buf)
497 return -ENOMEM; 518 return -ENOMEM;
498 519
520 if (!lbs_is_cmd_allowed(priv)) {
521 res = -EBUSY;
522 goto out_unlock;
523 }
524
499 buf_size = min(count, len - 1); 525 buf_size = min(count, len - 1);
500 if (copy_from_user(buf, userbuf, buf_size)) { 526 if (copy_from_user(buf, userbuf, buf_size)) {
501 res = -EFAULT; 527 res = -EFAULT;
@@ -532,6 +558,11 @@ static ssize_t lbs_rdbbp_read(struct file *file, char __user *userbuf,
532 if (!buf) 558 if (!buf)
533 return -ENOMEM; 559 return -ENOMEM;
534 560
561 if (!lbs_is_cmd_allowed(priv)) {
562 free_page(addr);
563 return -EBUSY;
564 }
565
535 offval.offset = priv->bbp_offset; 566 offval.offset = priv->bbp_offset;
536 offval.value = 0; 567 offval.value = 0;
537 568
@@ -585,6 +616,11 @@ static ssize_t lbs_wrbbp_write(struct file *file,
585 if (!buf) 616 if (!buf)
586 return -ENOMEM; 617 return -ENOMEM;
587 618
619 if (!lbs_is_cmd_allowed(priv)) {
620 res = -EBUSY;
621 goto out_unlock;
622 }
623
588 buf_size = min(count, len - 1); 624 buf_size = min(count, len - 1);
589 if (copy_from_user(buf, userbuf, buf_size)) { 625 if (copy_from_user(buf, userbuf, buf_size)) {
590 res = -EFAULT; 626 res = -EFAULT;
@@ -621,6 +657,11 @@ static ssize_t lbs_rdrf_read(struct file *file, char __user *userbuf,
621 if (!buf) 657 if (!buf)
622 return -ENOMEM; 658 return -ENOMEM;
623 659
660 if (!lbs_is_cmd_allowed(priv)) {
661 free_page(addr);
662 return -EBUSY;
663 }
664
624 offval.offset = priv->rf_offset; 665 offval.offset = priv->rf_offset;
625 offval.value = 0; 666 offval.value = 0;
626 667
@@ -674,6 +715,11 @@ static ssize_t lbs_wrrf_write(struct file *file,
674 if (!buf) 715 if (!buf)
675 return -ENOMEM; 716 return -ENOMEM;
676 717
718 if (!lbs_is_cmd_allowed(priv)) {
719 res = -EBUSY;
720 goto out_unlock;
721 }
722
677 buf_size = min(count, len - 1); 723 buf_size = min(count, len - 1);
678 if (copy_from_user(buf, userbuf, buf_size)) { 724 if (copy_from_user(buf, userbuf, buf_size)) {
679 res = -EFAULT; 725 res = -EFAULT;