Commit 66be626
committed
linux: fix a hang if there are no reads from the tty
avoid a "crun exec" hang when the the other end of the terminal
stopped reading.
That happened because `copy_fd_to_fd` tried to write everything that
it has received from the source fd, so it would hang the current
process. Prevent that using non blocking file descriptors and using
epoll to detect when the file descriptor is available for write.
Fixes: https://issues.redhat.com/browse/OCPBUGS-45632
Signed-off-by: Giuseppe Scrivano <[email protected]>1 parent c68f412 commit 66be626
3 files changed
+201
-27
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1968 | 1968 | | |
1969 | 1969 | | |
1970 | 1970 | | |
| 1971 | + | |
| 1972 | + | |
| 1973 | + | |
| 1974 | + | |
| 1975 | + | |
| 1976 | + | |
1971 | 1977 | | |
1972 | 1978 | | |
1973 | | - | |
1974 | 1979 | | |
1975 | | - | |
1976 | | - | |
1977 | | - | |
| 1980 | + | |
1978 | 1981 | | |
| 1982 | + | |
| 1983 | + | |
| 1984 | + | |
| 1985 | + | |
1979 | 1986 | | |
1980 | 1987 | | |
1981 | 1988 | | |
1982 | 1989 | | |
1983 | 1990 | | |
1984 | 1991 | | |
1985 | 1992 | | |
| 1993 | + | |
| 1994 | + | |
| 1995 | + | |
| 1996 | + | |
| 1997 | + | |
| 1998 | + | |
1986 | 1999 | | |
1987 | 2000 | | |
1988 | 2001 | | |
| |||
2054 | 2067 | | |
2055 | 2068 | | |
2056 | 2069 | | |
| 2070 | + | |
| 2071 | + | |
| 2072 | + | |
| 2073 | + | |
| 2074 | + | |
| 2075 | + | |
| 2076 | + | |
| 2077 | + | |
| 2078 | + | |
| 2079 | + | |
| 2080 | + | |
| 2081 | + | |
| 2082 | + | |
| 2083 | + | |
| 2084 | + | |
| 2085 | + | |
| 2086 | + | |
| 2087 | + | |
| 2088 | + | |
| 2089 | + | |
| 2090 | + | |
| 2091 | + | |
| 2092 | + | |
2057 | 2093 | | |
2058 | 2094 | | |
2059 | 2095 | | |
2060 | 2096 | | |
2061 | 2097 | | |
2062 | 2098 | | |
2063 | | - | |
| 2099 | + | |
| 2100 | + | |
| 2101 | + | |
| 2102 | + | |
2064 | 2103 | | |
2065 | | - | |
2066 | | - | |
2067 | 2104 | | |
2068 | | - | |
| 2105 | + | |
2069 | 2106 | | |
2070 | 2107 | | |
2071 | 2108 | | |
2072 | 2109 | | |
2073 | 2110 | | |
| 2111 | + | |
2074 | 2112 | | |
2075 | 2113 | | |
2076 | | - | |
2077 | | - | |
2078 | 2114 | | |
| 2115 | + | |
2079 | 2116 | | |
2080 | | - | |
| 2117 | + | |
2081 | 2118 | | |
2082 | 2119 | | |
2083 | 2120 | | |
2084 | 2121 | | |
2085 | 2122 | | |
2086 | | - | |
| 2123 | + | |
2087 | 2124 | | |
2088 | | - | |
| 2125 | + | |
2089 | 2126 | | |
2090 | 2127 | | |
2091 | 2128 | | |
| 2129 | + | |
| 2130 | + | |
| 2131 | + | |
| 2132 | + | |
| 2133 | + | |
| 2134 | + | |
2092 | 2135 | | |
2093 | 2136 | | |
2094 | 2137 | | |
2095 | 2138 | | |
2096 | 2139 | | |
2097 | 2140 | | |
2098 | 2141 | | |
2099 | | - | |
2100 | | - | |
2101 | | - | |
2102 | | - | |
2103 | | - | |
2104 | | - | |
2105 | | - | |
2106 | | - | |
2107 | | - | |
2108 | | - | |
2109 | | - | |
2110 | | - | |
2111 | | - | |
2112 | | - | |
2113 | 2142 | | |
2114 | 2143 | | |
2115 | 2144 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| 22 | + | |
22 | 23 | | |
23 | 24 | | |
24 | 25 | | |
| |||
1241 | 1242 | | |
1242 | 1243 | | |
1243 | 1244 | | |
| 1245 | + | |
| 1246 | + | |
| 1247 | + | |
| 1248 | + | |
| 1249 | + | |
| 1250 | + | |
| 1251 | + | |
| 1252 | + | |
| 1253 | + | |
| 1254 | + | |
| 1255 | + | |
| 1256 | + | |
| 1257 | + | |
| 1258 | + | |
| 1259 | + | |
| 1260 | + | |
| 1261 | + | |
| 1262 | + | |
| 1263 | + | |
1244 | 1264 | | |
1245 | 1265 | | |
1246 | 1266 | | |
| |||
2650 | 2670 | | |
2651 | 2671 | | |
2652 | 2672 | | |
| 2673 | + | |
| 2674 | + | |
| 2675 | + | |
| 2676 | + | |
| 2677 | + | |
| 2678 | + | |
| 2679 | + | |
| 2680 | + | |
| 2681 | + | |
| 2682 | + | |
| 2683 | + | |
| 2684 | + | |
| 2685 | + | |
| 2686 | + | |
| 2687 | + | |
| 2688 | + | |
| 2689 | + | |
| 2690 | + | |
| 2691 | + | |
| 2692 | + | |
| 2693 | + | |
| 2694 | + | |
| 2695 | + | |
| 2696 | + | |
| 2697 | + | |
| 2698 | + | |
| 2699 | + | |
| 2700 | + | |
| 2701 | + | |
| 2702 | + | |
| 2703 | + | |
| 2704 | + | |
| 2705 | + | |
| 2706 | + | |
| 2707 | + | |
| 2708 | + | |
| 2709 | + | |
| 2710 | + | |
| 2711 | + | |
| 2712 | + | |
| 2713 | + | |
| 2714 | + | |
| 2715 | + | |
| 2716 | + | |
| 2717 | + | |
| 2718 | + | |
| 2719 | + | |
| 2720 | + | |
| 2721 | + | |
| 2722 | + | |
| 2723 | + | |
| 2724 | + | |
| 2725 | + | |
| 2726 | + | |
| 2727 | + | |
| 2728 | + | |
| 2729 | + | |
| 2730 | + | |
| 2731 | + | |
| 2732 | + | |
| 2733 | + | |
| 2734 | + | |
| 2735 | + | |
| 2736 | + | |
| 2737 | + | |
| 2738 | + | |
| 2739 | + | |
| 2740 | + | |
| 2741 | + | |
| 2742 | + | |
| 2743 | + | |
| 2744 | + | |
| 2745 | + | |
| 2746 | + | |
| 2747 | + | |
| 2748 | + | |
| 2749 | + | |
| 2750 | + | |
| 2751 | + | |
| 2752 | + | |
| 2753 | + | |
| 2754 | + | |
| 2755 | + | |
| 2756 | + | |
| 2757 | + | |
| 2758 | + | |
| 2759 | + | |
| 2760 | + | |
| 2761 | + | |
| 2762 | + | |
| 2763 | + | |
| 2764 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
475 | 475 | | |
476 | 476 | | |
477 | 477 | | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
478 | 511 | | |
0 commit comments