mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 12:43:29 +02:00
s390/debug: improve debug_event
debug_event currently truncates the data if used with a size larger than the buf_size of the debug feature. For lots of callers of this function, wrappers have been implemented that loop until all data is handled. Move that functionality into debug_event_common and get rid of the wrappers. Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com> Acked-by: Michael Holzheu <holzheu@linux.vnet.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
committed by
Martin Schwidefsky
parent
7c3eaaa391
commit
94158e544f
@@ -900,12 +900,16 @@ debug_entry_t *debug_event_common(debug_info_t *id, int level, const void *buf,
|
||||
} else {
|
||||
spin_lock_irqsave(&id->lock, flags);
|
||||
}
|
||||
active = get_active_entry(id);
|
||||
memset(DEBUG_DATA(active), 0, id->buf_size);
|
||||
memcpy(DEBUG_DATA(active), buf, min(len, id->buf_size));
|
||||
debug_finish_entry(id, active, level, 0);
|
||||
spin_unlock_irqrestore(&id->lock, flags);
|
||||
do {
|
||||
active = get_active_entry(id);
|
||||
memset(DEBUG_DATA(active), 0, id->buf_size);
|
||||
memcpy(DEBUG_DATA(active), buf, min(len, id->buf_size));
|
||||
debug_finish_entry(id, active, level, 0);
|
||||
len -= id->buf_size;
|
||||
buf += id->buf_size;
|
||||
} while (len > 0);
|
||||
|
||||
spin_unlock_irqrestore(&id->lock, flags);
|
||||
return active;
|
||||
}
|
||||
EXPORT_SYMBOL(debug_event_common);
|
||||
@@ -928,12 +932,16 @@ debug_entry_t *debug_exception_common(debug_info_t *id, int level,
|
||||
} else {
|
||||
spin_lock_irqsave(&id->lock, flags);
|
||||
}
|
||||
active = get_active_entry(id);
|
||||
memset(DEBUG_DATA(active), 0, id->buf_size);
|
||||
memcpy(DEBUG_DATA(active), buf, min(len, id->buf_size));
|
||||
debug_finish_entry(id, active, level, 1);
|
||||
spin_unlock_irqrestore(&id->lock, flags);
|
||||
do {
|
||||
active = get_active_entry(id);
|
||||
memset(DEBUG_DATA(active), 0, id->buf_size);
|
||||
memcpy(DEBUG_DATA(active), buf, min(len, id->buf_size));
|
||||
debug_finish_entry(id, active, level, len <= id->buf_size);
|
||||
len -= id->buf_size;
|
||||
buf += id->buf_size;
|
||||
} while (len > 0);
|
||||
|
||||
spin_unlock_irqrestore(&id->lock, flags);
|
||||
return active;
|
||||
}
|
||||
EXPORT_SYMBOL(debug_exception_common);
|
||||
|
Reference in New Issue
Block a user