Project

General

Profile

Backport #8064

r39687 - io.c (rb_update_max_fd): use ATOMIC_CAS のバックポート

Added by kosaki (Motohiro KOSAKI) over 6 years ago. Updated about 6 years ago.

Status:
Closed
Priority:
Normal
[ruby-dev:47155]

Description

現状、1.9.3と2.0において、rb_update_max_fdが排他制御されずに呼ばれているので最大FDを間違って更新し、
結果fd leakにつながる可能性があります。
これはsensitive dataのリークにつながるかどうかはスクリプト次第ですが、塞いでおいたほうが心の安全が図れそうです

Associated revisions

Revision 506ee0c1
Added by nagachika (Tomoyuki Chikanaga) about 6 years ago

merge revision(s) 39687,39776,40438: [Backport #8064]

    * io.c (rb_update_max_fd): use ATOMIC_CAS because this function
      is used from timer thread too.

    * io.c (rb_fd_fix_cloexec): use rb_update_max_fd().

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@40490 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

Revision 40490
Added by nagachika (Tomoyuki Chikanaga) about 6 years ago

merge revision(s) 39687,39776,40438: [Backport #8064]

* io.c (rb_update_max_fd): use ATOMIC_CAS because this function
  is used from timer thread too.

* io.c (rb_fd_fix_cloexec): use rb_update_max_fd().

History

Updated by nagachika (Tomoyuki Chikanaga) about 6 years ago

r39687 と一緒に変数の型を変更している r39776 もバックポートしようと思います。

Updated by kosaki (Motohiro KOSAKI) about 6 years ago

あ、すいません。これちょっと待ってください。
r39687書いたときはちょっと考慮できていなかったのですが、型を変更してしまうとどこが壊れるかわからないので、
素直にmutex導入して、変更最小限修正に出来ないか一度考えたい。

Updated by nagachika (Tomoyuki Chikanaga) about 6 years ago

こちらどうでしょうか。急がなくてもいいと思いますが、r39687 だけ入れていてもあまり意味はないでしょうか?

Updated by kosaki (Motohiro KOSAKI) about 6 years ago

見なおしたけど r40438 入れれば、触ってる場所一箇所になるから僕的に許せる感じ。

Updated by nagachika (Tomoyuki Chikanaga) about 6 years ago

ありがとうございます。
一旦 r39687, r39776, r40438 をマージして閉じようと思います。
追加で変更があればまた backport チケットを作ってください。

#6

Updated by nagachika (Tomoyuki Chikanaga) about 6 years ago

  • Status changed from Assigned to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r40490.
Motohiro, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


merge revision(s) 39687,39776,40438: [Backport #8064]

* io.c (rb_update_max_fd): use ATOMIC_CAS because this function
  is used from timer thread too.

* io.c (rb_fd_fix_cloexec): use rb_update_max_fd().

Also available in: Atom PDF