|
@@ -418,17 +418,18 @@ static void _tcpm_log(struct tcpm_port *port, const char *fmt, va_list args)
|
|
u64 ts_nsec = local_clock();
|
|
u64 ts_nsec = local_clock();
|
|
unsigned long rem_nsec;
|
|
unsigned long rem_nsec;
|
|
|
|
|
|
|
|
+ mutex_lock(&port->logbuffer_lock);
|
|
if (!port->logbuffer[port->logbuffer_head]) {
|
|
if (!port->logbuffer[port->logbuffer_head]) {
|
|
port->logbuffer[port->logbuffer_head] =
|
|
port->logbuffer[port->logbuffer_head] =
|
|
kzalloc(LOG_BUFFER_ENTRY_SIZE, GFP_KERNEL);
|
|
kzalloc(LOG_BUFFER_ENTRY_SIZE, GFP_KERNEL);
|
|
- if (!port->logbuffer[port->logbuffer_head])
|
|
|
|
|
|
+ if (!port->logbuffer[port->logbuffer_head]) {
|
|
|
|
+ mutex_unlock(&port->logbuffer_lock);
|
|
return;
|
|
return;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
vsnprintf(tmpbuffer, sizeof(tmpbuffer), fmt, args);
|
|
vsnprintf(tmpbuffer, sizeof(tmpbuffer), fmt, args);
|
|
|
|
|
|
- mutex_lock(&port->logbuffer_lock);
|
|
|
|
-
|
|
|
|
if (tcpm_log_full(port)) {
|
|
if (tcpm_log_full(port)) {
|
|
port->logbuffer_head = max(port->logbuffer_head - 1, 0);
|
|
port->logbuffer_head = max(port->logbuffer_head - 1, 0);
|
|
strcpy(tmpbuffer, "overflow");
|
|
strcpy(tmpbuffer, "overflow");
|