On 01/19/2008 03:49 AM, Bruno Randolf wrote:
> * use only one debug level for beacon debugging: unify ATH5K_DEBUG_BEACON and
> ATH5K_DEBUG_BEACON_PROC
> 
> * remove debug level ATH5K_DEBUG_FATAL. doesn't make sense as a debug level -
> if it's fatal it should be logged as an error.
> 
> * fancier printing of debug levels. cat /debugfs/ath5k/phy0/debug
> 
> * allow debug levels to be changed by echoing their name into
> /debugfs/ath5k/phy0/debug. this will toggle the state, when it was off it will
> be turned on and vice versa.
> 
> drivers/net/wireless/ath5k/base.c:      Changes-licensed-under: 3-Clause-BSD
> drivers/net/wireless/ath5k/debug.c:     Changes-licensed-under: GPL
> drivers/net/wireless/ath5k/debug.h:     Changes-licensed-under: GPL
> 
> Signed-off-by: Bruno Randolf <[EMAIL PROTECTED]>
> Acked-by: Luis R. Rodriguez <[EMAIL PROTECTED]>
> ---
> 
>  drivers/net/wireless/ath5k/base.c  |   10 ++--
>  drivers/net/wireless/ath5k/debug.c |   95 
> +++++++++++++++++++++++++++++++-----
>  drivers/net/wireless/ath5k/debug.h |   18 +++----
>  3 files changed, 93 insertions(+), 30 deletions(-)
> 
> 
[...]
> diff --git a/drivers/net/wireless/ath5k/debug.c 
> b/drivers/net/wireless/ath5k/debug.c
> index 4ba649e..63e39f9 100644
> --- a/drivers/net/wireless/ath5k/debug.c
> +++ b/drivers/net/wireless/ath5k/debug.c
> @@ -314,6 +314,76 @@ static const struct file_operations fops_reset = {
[...]
> +static ssize_t write_file_debug(struct file *file,
> +                              const char __user *userbuf,
> +                              size_t count, loff_t *ppos)
> +{
> +     struct ath5k_softc *sc = file->private_data;
> +     int i;

BTW. unsigned int generates better code on most platforms.

> +
> +     for (i = 0; i < ARRAY_SIZE(dbg_info); i++) {
> +             if (strncmp(userbuf, dbg_info[i].name,
> +                                     strlen(dbg_info[i].name)) == 0)

Ah, we have bugs in debug write methods. You can't pass user buffer to strcmp. 
You must copy_from_user() it first. Otherwise kernel won't be happy from 
userspace code such as:
fd = open("path_to_the_debug_file", O_RDWR);
write(fd, 1234 or NULL or whatever meaningless, 1);

Also you don't need to call strncmp, strcmp is OK (you can rely on 
dbg_info.name 
being null terminated and also the static strings such as "disable" are...) and 
shorter.

Microoptimisation is to put "break" right after it:

 > +                    sc->debug.level ^= dbg_info[i].level; /* toggle bit */

but it's not mandatory at all.

thanks,
--js
_______________________________________________
ath5k-devel mailing list
ath5k-devel@lists.ath5k.org
https://lists.ath5k.org/mailman/listinfo/ath5k-devel

Reply via email to