@@ -93,10 +93,13 @@ static ssize_t rpc_sysfs_xprt_dstaddr_show(struct kobject *kobj,
9393 struct rpc_xprt * xprt = rpc_sysfs_xprt_kobj_get_xprt (kobj );
9494 ssize_t ret ;
9595
96- if (!xprt )
97- return 0 ;
96+ if (!xprt ) {
97+ ret = sprintf (buf , "<closed>\n" );
98+ goto out ;
99+ }
98100 ret = sprintf (buf , "%s\n" , xprt -> address_strings [RPC_DISPLAY_ADDR ]);
99101 xprt_put (xprt );
102+ out :
100103 return ret ;
101104}
102105
@@ -106,10 +109,10 @@ static ssize_t rpc_sysfs_xprt_srcaddr_show(struct kobject *kobj,
106109{
107110 struct rpc_xprt * xprt = rpc_sysfs_xprt_kobj_get_xprt (kobj );
108111 size_t buflen = PAGE_SIZE ;
109- ssize_t ret = - ENOTSOCK ;
112+ ssize_t ret ;
110113
111114 if (!xprt || !xprt_connected (xprt )) {
112- ret = - ENOTCONN ;
115+ ret = sprintf ( buf , "<closed>\n" ) ;
113116 } else if (xprt -> ops -> get_srcaddr ) {
114117 ret = xprt -> ops -> get_srcaddr (xprt , buf , buflen );
115118 if (ret > 0 ) {
@@ -118,8 +121,10 @@ static ssize_t rpc_sysfs_xprt_srcaddr_show(struct kobject *kobj,
118121 ret ++ ;
119122 buf [ret ] = '\0' ;
120123 }
121- }
122- }
124+ } else
125+ ret = sprintf (buf , "<closed>\n" );
126+ } else
127+ ret = sprintf (buf , "<not a socket>\n" );
123128 xprt_put (xprt );
124129 return ret ;
125130}
@@ -133,8 +138,8 @@ static ssize_t rpc_sysfs_xprt_info_show(struct kobject *kobj,
133138 ssize_t ret ;
134139
135140 if (!xprt || !xprt_connected (xprt )) {
136- xprt_put ( xprt );
137- return - ENOTCONN ;
141+ ret = sprintf ( buf , "<closed>\n" );
142+ goto out ;
138143 }
139144
140145 if (xprt -> ops -> get_srcport )
@@ -152,6 +157,7 @@ static ssize_t rpc_sysfs_xprt_info_show(struct kobject *kobj,
152157 xprt -> backlog .qlen , xprt -> main , srcport ,
153158 atomic_long_read (& xprt -> queuelen ),
154159 xprt -> address_strings [RPC_DISPLAY_PORT ]);
160+ out :
155161 xprt_put (xprt );
156162 return ret ;
157163}
@@ -165,10 +171,7 @@ static ssize_t rpc_sysfs_xprt_state_show(struct kobject *kobj,
165171 int locked , connected , connecting , close_wait , bound , binding ,
166172 closing , congested , cwnd_wait , write_space , offline , remove ;
167173
168- if (!xprt )
169- return 0 ;
170-
171- if (!xprt -> state ) {
174+ if (!(xprt && xprt -> state )) {
172175 ret = sprintf (buf , "state=CLOSED\n" );
173176 } else {
174177 locked = test_bit (XPRT_LOCKED , & xprt -> state );
0 commit comments