lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Date:   Mon, 5 Mar 2018 17:06:38 +0530
From:   "Kohli, Gaurav" <gkohli@...eaurora.org>
To:     jslaby@...e.com, mikey@...ling.org,
        Greg Kroah-Hartman <gregkh@...uxfoundation.org>
Cc:     Alan Cox <gnomes@...rguk.ukuu.org.uk>,
        linux-kernel@...r.kernel.org, linux-arm-msm@...r.kernel.org
Subject: Query Regarding init block up due to tty_wait_until_sent

Hi,

We have seen few instances, where init is getting blocked due to wait in below call:

-002|schedule()
-003|schedule_timeout()  -> timeout for 30 seconds
-004|tty_wait_until_sent()
-005|tty_port_close_start.part.3()
-006|tty_port_close()
-007|uart_close()
-008|tty_name(inline)
-008|tty_release()
-009|__fput()
-010|____fput()
-011|task_work_run()
-012|do_notify_resume()
-013|work_pending(asm)
  ---|end of frame

When i have checked the data structures, it seems there is pending data available in buffer, but uart_port got seems to free.

   (struct uart_state *)0xFFFFFFC3EDCE4000 = 0xFFFFFFC3EDCE4000 -> (
     port = (
       buf = (head = 0xFFFFFFC3E772BC80, work = (data = (counter = 1024), entry = (next = 0xFFFFFFC3EDCE4010, prev = 0xFFFFFFC3E
       tty = 0xFFFFFFC3E772C280,
       itty = 0xFFFFFFC3E772C280,
       ops = 0xFFFFFF89D3E7EBB0,
       lock = (rlock = (raw_lock = (owner = 3, next = 3), magic = 3735899821, owner_cpu = 4294967295, owner = 0xFFFFFFFFFFFFFFFF
       blocked_open = 0,
       count = 0,
       open_wait = (lock = (rlock = (raw_lock = (owner = 0, next = 0), magic = 3735899821, owner_cpu = 4294967295, owner = 0xFFF
       delta_msr_wait = (lock = (rlock = (raw_lock = (owner = 0, next = 0), magic = 3735899821, owner_cpu = 4294967295, owner =
       flags = 0,
       iflags = 5,
       console = 1,
       low_latency = 0,
       mutex = (count = (counter = 1), wait_lock = (rlock = (raw_lock = (owner = 4, next = 4), magic = 3735899821, owner_cpu = 4
       buf_mutex = (count = (counter = 1), wait_lock = (rlock = (raw_lock = (owner = 0, next = 0), magic = 3735899821, owner_cpu
       xmit_buf = 0x0,
       close_delay = 50,
       closing_wait = 3000,
       drain_delay = 0,
       kref = (refcount = (counter = 1))),
     pm_state = UART_PM_STATE_ON = 0x0,
     xmit = (buf = 0xFFFFFFC3E7507000, head = 1, tail = 0),
     refcount = (counter = 1),
     remove_wait = (lock = (rlock = (raw_lock = (owner = 0, next = 0), magic = 3735899821, owner_cpu = 4294967295, owner = 0xFFF
     uart_port = 0xFFFFFF89D58582A0 -> (
       lock = (rlock = (raw_lock = (owner = 604, next = 604), magic = 3735899821, owner_cpu = 4294967295, owner = 0xFFFFFFFFFFFF
       iobase = 0,
       membase = 0xFFFFFF800C7C4000,
       serial_in = 0x0,
       serial_out = 0x0,
       set_termios = 0x0,
  
So in that case write of data won't be possible, So to avoid that do we have to reduce timeout which seems high in current case.
And how can we avoid this if data is available in tty, but uart_port seems to be free.

Please let me know, In case further info is required.

Regards
Gaurav

-- 
Qualcomm India Private Limited, on behalf of Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project.

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ