@@ -46,7 +46,7 @@ static int proc_procreadwrite_show (struct seq_file *m, void *v) {
4646 size_t spacing ;
4747 char spacing_left [] = " " ;
4848
49- if (!proc_details .filename [0 ]) {
49+ if (!proc_details .filename [0 ] || ! proc_details . dir_entry ) {
5050 return - ENOENT ;
5151 }
5252
@@ -60,12 +60,13 @@ static int proc_procreadwrite_show (struct seq_file *m, void *v) {
6060 "\n------------------------------------------------------------\n" , spacing_left , proc_details .filename );
6161
6262 snprintf (buf , BUF , "%s> %-42s : %s\n" , buf , "Module " , proc_details .modname );
63- snprintf (buf , BUF , "%s> %-42s\n" , buf , "Mode " );
64- snprintf (buf , BUF , "%s %-38s : %o\n" , buf , "Format " , (proc_details .dir_entry -> mode & 0170000 ) / (8 * 8 * 8 ));
65- snprintf (buf , BUF , "%s %-38s : %o\n" , buf , "Permissions " , proc_details .dir_entry -> mode & 0777 );
66- snprintf (buf , BUF , "%s> %-42s : %zd\n" , buf , "Count " , (size_t )(proc_details .dir_entry -> count .counter ));
67- snprintf (buf , BUF , "%s> %-42s : %zd\n" , buf , "In use " , (size_t )(proc_details .dir_entry -> in_use .counter ));
68-
63+ if (proc_details .dir_entry ) {
64+ snprintf (buf , BUF , "%s> %-42s\n" , buf , "Mode " );
65+ snprintf (buf , BUF , "%s %-38s : %o\n" , buf , "Format " , (proc_details .dir_entry -> mode & 0170000 ) / (8 * 8 * 8 ));
66+ snprintf (buf , BUF , "%s %-38s : %o\n" , buf , "Permissions " , proc_details .dir_entry -> mode & 0777 );
67+ snprintf (buf , BUF , "%s> %-42s : %zd\n" , buf , "Count " , (size_t )(proc_details .dir_entry -> count .counter ));
68+ snprintf (buf , BUF , "%s> %-42s : %zd\n" , buf , "In use " , (size_t )(proc_details .dir_entry -> in_use .counter ));
69+ }
6970 snprintf (buf , BUF , "%s> %-42s : %s\n" , buf , "File Operations " , proc_details .fops [0 ] ? "Yes" : "No" );
7071 if (proc_details .fops [0 ]) {
7172 snprintf (buf , BUF , "%s %s = {\n" , buf , proc_details .fops );
@@ -78,6 +79,7 @@ static int proc_procreadwrite_show (struct seq_file *m, void *v) {
7879 }
7980
8081 seq_puts (m , buf );
82+ proc_details .filename [0 ] = 0 ;
8183 return 0 ;
8284}
8385
@@ -136,6 +138,7 @@ static void get_details() {
136138 char * modname = NULL ;
137139 char namebuf [128 ];
138140
141+ proc_details .dir_entry = NULL ;
139142 spin_lock (subdir_lock );
140143 rv = xlate (proc_details .filename , & (proc_details .dir_entry ), & fn );
141144 printk (KERN_INFO MOD "Ret: %d, Residual: %s\n" , rv , fn );
0 commit comments