Skip to content

Commit

Permalink
staging: ft1000: Fix proc initialization handling.
Browse files Browse the repository at this point in the history
Cleaning proc entries when error occures was not handled correctly.
So fix and also add proper cleaning.

Signed-off-by: Marek Belisko <marek.belisko@open-nandra.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Marek Belisko authored and Greg Kroah-Hartman committed Dec 10, 2010
1 parent 1158841 commit 5fd866f
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 15 deletions.
40 changes: 26 additions & 14 deletions drivers/staging/ft1000/ft1000-usb/ft1000_proc.c
Original file line number Diff line number Diff line change
Expand Up @@ -193,32 +193,44 @@ static struct notifier_block ft1000_netdev_notifier = {
};


void
ft1000InitProc (struct net_device *dev)
int ft1000InitProc(struct net_device *dev)
{
struct ft1000_info *info;
struct proc_dir_entry *ft1000_proc_file;
info = netdev_priv(dev);
int ret = 0;

info = netdev_priv(dev);

info->ft1000_proc_dir = proc_mkdir (FT1000_PROC_DIR, FTNET_PROC);
if (info->ft1000_proc_dir == NULL)
{
remove_proc_entry (FT1000_PROC_DIR, FTNET_PROC);
}

if (info->ft1000_proc_dir == NULL) {
printk(KERN_WARNING "Unable to create %s dir.\n",
FT1000_PROC_DIR);
ret = -EINVAL;
goto fail;
}

ft1000_proc_file =
create_proc_read_entry (dev->name, 0644, info->ft1000_proc_dir,
ft1000ReadProc, dev);
if (ft1000_proc_file == NULL)
{
remove_proc_entry (info->netdevname, info->ft1000_proc_dir);
}
if (ft1000_proc_file == NULL) {
printk(KERN_WARNING "Unable to create /proc entry.\n");
ret = -EINVAL;
goto fail_entry;
}

snprintf (info->netdevname, IFNAMSIZ, "%s", dev->name);
register_netdevice_notifier (&ft1000_netdev_notifier);
return;
ret = register_netdevice_notifier(&ft1000_netdev_notifier);
if (ret)
goto fail_notif;

return 0;

fail_notif:
remove_proc_entry(info->netdevname, info->ft1000_proc_dir);
fail_entry:
remove_proc_entry(FT1000_PROC_DIR, FTNET_PROC);
fail:
return ret;
}

void
Expand Down
2 changes: 1 addition & 1 deletion drivers/staging/ft1000/ft1000-usb/ft1000_usb.h
Original file line number Diff line number Diff line change
Expand Up @@ -594,7 +594,7 @@ struct usb_interface;
int reg_ft1000_netdev(struct ft1000_device *ft1000dev, struct usb_interface *intf);
int ft1000_poll(void* dev_id);

void ft1000InitProc(struct net_device *dev);
int ft1000InitProc(struct net_device *dev);
void ft1000CleanupProc(struct ft1000_info *info);


Expand Down

0 comments on commit 5fd866f

Please sign in to comment.