@@ -1395,26 +1395,31 @@ static int qcom_glink_announce_create(struct rpmsg_device *rpdev)
13951395 return 0 ;
13961396}
13971397
1398+ static void qcom_glink_remove_rpmsg_device (struct qcom_glink * glink , struct glink_channel * channel )
1399+ {
1400+ struct rpmsg_channel_info chinfo ;
1401+
1402+ if (channel -> rpdev ) {
1403+ strscpy_pad (chinfo .name , channel -> name , sizeof (chinfo .name ));
1404+ chinfo .src = RPMSG_ADDR_ANY ;
1405+ chinfo .dst = RPMSG_ADDR_ANY ;
1406+ rpmsg_unregister_device (glink -> dev , & chinfo );
1407+ }
1408+ channel -> rpdev = NULL ;
1409+ }
1410+
13981411static void qcom_glink_destroy_ept (struct rpmsg_endpoint * ept )
13991412{
14001413 struct glink_channel * channel = to_glink_channel (ept );
14011414 struct qcom_glink * glink = channel -> glink ;
1402- struct rpmsg_channel_info chinfo ;
14031415 unsigned long flags ;
14041416
14051417 spin_lock_irqsave (& channel -> recv_lock , flags );
14061418 channel -> ept .cb = NULL ;
14071419 spin_unlock_irqrestore (& channel -> recv_lock , flags );
14081420
14091421 /* Decouple the potential rpdev from the channel */
1410- if (channel -> rpdev ) {
1411- strscpy_pad (chinfo .name , channel -> name , sizeof (chinfo .name ));
1412- chinfo .src = RPMSG_ADDR_ANY ;
1413- chinfo .dst = RPMSG_ADDR_ANY ;
1414-
1415- rpmsg_unregister_device (glink -> dev , & chinfo );
1416- }
1417- channel -> rpdev = NULL ;
1422+ qcom_glink_remove_rpmsg_device (glink , channel );
14181423
14191424 qcom_glink_send_close_req (glink , channel );
14201425}
@@ -1705,7 +1710,6 @@ static int qcom_glink_rx_open(struct qcom_glink *glink, unsigned int rcid,
17051710
17061711static void qcom_glink_rx_close (struct qcom_glink * glink , unsigned int rcid )
17071712{
1708- struct rpmsg_channel_info chinfo ;
17091713 struct glink_channel * channel ;
17101714 unsigned long flags ;
17111715
@@ -1721,14 +1725,7 @@ static void qcom_glink_rx_close(struct qcom_glink *glink, unsigned int rcid)
17211725 /* cancel pending rx_done work */
17221726 cancel_work_sync (& channel -> intent_work );
17231727
1724- if (channel -> rpdev ) {
1725- strscpy_pad (chinfo .name , channel -> name , sizeof (chinfo .name ));
1726- chinfo .src = RPMSG_ADDR_ANY ;
1727- chinfo .dst = RPMSG_ADDR_ANY ;
1728-
1729- rpmsg_unregister_device (glink -> dev , & chinfo );
1730- }
1731- channel -> rpdev = NULL ;
1728+ qcom_glink_remove_rpmsg_device (glink , channel );
17321729
17331730 qcom_glink_send_close_ack (glink , channel );
17341731
@@ -1742,7 +1739,6 @@ static void qcom_glink_rx_close(struct qcom_glink *glink, unsigned int rcid)
17421739
17431740static void qcom_glink_rx_close_ack (struct qcom_glink * glink , unsigned int lcid )
17441741{
1745- struct rpmsg_channel_info chinfo ;
17461742 struct glink_channel * channel ;
17471743 unsigned long flags ;
17481744
@@ -1764,14 +1760,7 @@ static void qcom_glink_rx_close_ack(struct qcom_glink *glink, unsigned int lcid)
17641760 spin_unlock_irqrestore (& glink -> idr_lock , flags );
17651761
17661762 /* Decouple the potential rpdev from the channel */
1767- if (channel -> rpdev ) {
1768- strscpy (chinfo .name , channel -> name , sizeof (chinfo .name ));
1769- chinfo .src = RPMSG_ADDR_ANY ;
1770- chinfo .dst = RPMSG_ADDR_ANY ;
1771-
1772- rpmsg_unregister_device (glink -> dev , & chinfo );
1773- }
1774- channel -> rpdev = NULL ;
1763+ qcom_glink_remove_rpmsg_device (glink , channel );
17751764
17761765 kref_put (& channel -> refcount , qcom_glink_channel_release );
17771766}
0 commit comments