@@ -420,35 +420,27 @@ static const struct file_operations interface_desc_fops = {
420420static int create_monitor_dir (struct rv_monitor * mon , struct rv_monitor * parent )
421421{
422422 struct dentry * root = parent ? parent -> root_d : get_monitors_root ();
423- const char * name = mon -> name ;
423+ struct dentry * dir __free ( rv_remove ) = rv_create_dir ( mon -> name , root ) ;
424424 struct dentry * tmp ;
425425 int retval ;
426426
427- mon -> root_d = rv_create_dir (name , root );
428- if (!mon -> root_d )
427+ if (!dir )
429428 return - ENOMEM ;
430429
431- tmp = rv_create_file ("enable" , RV_MODE_WRITE , mon -> root_d , mon , & interface_enable_fops );
432- if (!tmp ) {
433- retval = - ENOMEM ;
434- goto out_remove_root ;
435- }
430+ tmp = rv_create_file ("enable" , RV_MODE_WRITE , dir , mon , & interface_enable_fops );
431+ if (!tmp )
432+ return - ENOMEM ;
436433
437- tmp = rv_create_file ("desc" , RV_MODE_READ , mon -> root_d , mon , & interface_desc_fops );
438- if (!tmp ) {
439- retval = - ENOMEM ;
440- goto out_remove_root ;
441- }
434+ tmp = rv_create_file ("desc" , RV_MODE_READ , dir , mon , & interface_desc_fops );
435+ if (!tmp )
436+ return - ENOMEM ;
442437
443- retval = reactor_populate_monitor (mon );
438+ retval = reactor_populate_monitor (mon , dir );
444439 if (retval )
445- goto out_remove_root ;
440+ return retval ;
446441
442+ mon -> root_d = no_free_ptr (dir );
447443 return 0 ;
448-
449- out_remove_root :
450- rv_remove (mon -> root_d );
451- return retval ;
452444}
453445
454446/*
@@ -827,39 +819,36 @@ int __init rv_init_interface(void)
827819{
828820 struct dentry * tmp ;
829821 int retval ;
822+ struct dentry * root_dir __free (rv_remove ) = rv_create_dir ("rv" , NULL );
830823
831- rv_root .root_dir = rv_create_dir ("rv" , NULL );
832- if (!rv_root .root_dir )
833- goto out_err ;
824+ if (!root_dir )
825+ return 1 ;
834826
835- rv_root .monitors_dir = rv_create_dir ("monitors" , rv_root . root_dir );
827+ rv_root .monitors_dir = rv_create_dir ("monitors" , root_dir );
836828 if (!rv_root .monitors_dir )
837- goto out_err ;
829+ return 1 ;
838830
839- tmp = rv_create_file ("available_monitors" , RV_MODE_READ , rv_root . root_dir , NULL ,
831+ tmp = rv_create_file ("available_monitors" , RV_MODE_READ , root_dir , NULL ,
840832 & available_monitors_ops );
841833 if (!tmp )
842- goto out_err ;
834+ return 1 ;
843835
844- tmp = rv_create_file ("enabled_monitors" , RV_MODE_WRITE , rv_root . root_dir , NULL ,
836+ tmp = rv_create_file ("enabled_monitors" , RV_MODE_WRITE , root_dir , NULL ,
845837 & enabled_monitors_ops );
846838 if (!tmp )
847- goto out_err ;
839+ return 1 ;
848840
849- tmp = rv_create_file ("monitoring_on" , RV_MODE_WRITE , rv_root . root_dir , NULL ,
841+ tmp = rv_create_file ("monitoring_on" , RV_MODE_WRITE , root_dir , NULL ,
850842 & monitoring_on_fops );
851843 if (!tmp )
852- goto out_err ;
853- retval = init_rv_reactors (rv_root . root_dir );
844+ return 1 ;
845+ retval = init_rv_reactors (root_dir );
854846 if (retval )
855- goto out_err ;
847+ return 1 ;
856848
857849 turn_monitoring_on ();
858850
859- return 0 ;
851+ rv_root . root_dir = no_free_ptr ( root_dir ) ;
860852
861- out_err :
862- rv_remove (rv_root .root_dir );
863- printk (KERN_ERR "RV: Error while creating the RV interface\n" );
864- return 1 ;
853+ return 0 ;
865854}
0 commit comments