@@ -471,42 +471,40 @@ int dlm_lowcomms_connect_node(int nodeid)
471
471
static void lowcomms_error_report (struct sock * sk )
472
472
{
473
473
struct connection * con ;
474
- struct sockaddr_storage saddr ;
475
474
void (* orig_report )(struct sock * ) = NULL ;
475
+ struct inet_sock * inet ;
476
476
477
477
read_lock_bh (& sk -> sk_callback_lock );
478
478
con = sock2con (sk );
479
479
if (con == NULL )
480
480
goto out ;
481
481
482
482
orig_report = listen_sock .sk_error_report ;
483
- if (kernel_getpeername (sk -> sk_socket , (struct sockaddr * )& saddr ) < 0 ) {
484
- printk_ratelimited (KERN_ERR "dlm: node %d: socket error "
485
- "sending to node %d, port %d, "
486
- "sk_err=%d/%d\n" , dlm_our_nodeid (),
487
- con -> nodeid , dlm_config .ci_tcp_port ,
488
- sk -> sk_err , sk -> sk_err_soft );
489
- } else if (saddr .ss_family == AF_INET ) {
490
- struct sockaddr_in * sin4 = (struct sockaddr_in * )& saddr ;
491
483
484
+ inet = inet_sk (sk );
485
+ switch (sk -> sk_family ) {
486
+ case AF_INET :
492
487
printk_ratelimited (KERN_ERR "dlm: node %d: socket error "
493
- "sending to node %d at %pI4, port %d, "
488
+ "sending to node %d at %pI4, dport %d, "
494
489
"sk_err=%d/%d\n" , dlm_our_nodeid (),
495
- con -> nodeid , & sin4 -> sin_addr . s_addr ,
496
- dlm_config . ci_tcp_port , sk -> sk_err ,
490
+ con -> nodeid , & inet -> inet_daddr ,
491
+ ntohs ( inet -> inet_dport ) , sk -> sk_err ,
497
492
sk -> sk_err_soft );
498
- } else {
499
- struct sockaddr_in6 * sin6 = (struct sockaddr_in6 * )& saddr ;
500
-
493
+ break ;
494
+ case AF_INET6 :
501
495
printk_ratelimited (KERN_ERR "dlm: node %d: socket error "
502
- "sending to node %d at %u.%u.%u.%u, "
503
- "port %d, sk_err=%d/%d\n" , dlm_our_nodeid (),
504
- con -> nodeid , sin6 -> sin6_addr .s6_addr32 [0 ],
505
- sin6 -> sin6_addr .s6_addr32 [1 ],
506
- sin6 -> sin6_addr .s6_addr32 [2 ],
507
- sin6 -> sin6_addr .s6_addr32 [3 ],
508
- dlm_config .ci_tcp_port , sk -> sk_err ,
496
+ "sending to node %d at %pI6c, "
497
+ "dport %d, sk_err=%d/%d\n" , dlm_our_nodeid (),
498
+ con -> nodeid , & sk -> sk_v6_daddr ,
499
+ ntohs (inet -> inet_dport ), sk -> sk_err ,
509
500
sk -> sk_err_soft );
501
+ break ;
502
+ default :
503
+ printk_ratelimited (KERN_ERR "dlm: node %d: socket error "
504
+ "invalid socket family %d set, "
505
+ "sk_err=%d/%d\n" , dlm_our_nodeid (),
506
+ sk -> sk_family , sk -> sk_err , sk -> sk_err_soft );
507
+ goto out ;
510
508
}
511
509
out :
512
510
read_unlock_bh (& sk -> sk_callback_lock );
0 commit comments