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  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Fri, 12 May 2017 14:54:17 +0000
From:   bugzilla-daemon@...zilla.kernel.org
To:     linux-ext4@...nel.org
Subject: [Bug 195729] JBD2: Spotted dirty metadata buffer (dev = sda1,
 blocknr = 1766784).There's a risk of filesystem corruption in case of system
 crash.

https://bugzilla.kernel.org/show_bug.cgi?id=195729

--- Comment #3 from jqiaoulk@...il.com ---
This is the root cause, which is pretty straightforward:

The spin lock is firstly acquired at the following function:

OutputResults CSTmMasterOutput::Start(const stm_display_mode_t* pModeLine) {
vibe_os_lock_resource(m_lock);

if(!this->SetOutputFormat(m_ulOutputFormat)) {
TRC;
goto stop_and_exit;
}

vibe_os_unlock_resource(m_lock);
}

and this->SetOutputFormat will eventually call vibe_os_clk_set_parent() as
below:

bool CSTmClockLLA::Enable {
vibe_os_clk_set_parent(output, source);
}

Based on the callstack, we know vibe_os_clk_set_parent will call
clk_set_parent().
clk_set_parent() is a basic kernel API that would potentially go to sleep,
based on the call stack in the log.

Therefore, CSTmMasterOutput::Start would potentially go to sleeps while holding
spin_Lock().

-- 
You are receiving this mail because:
You are watching the assignee of the bug.

Powered by blists - more mailing lists