All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v3 for-2.5 00/12] qjson: Fix crash & save a lot of memory
@ 2015-11-25 21:23 Markus Armbruster
  2015-11-25 21:23 ` [Qemu-devel] [PATCH v3 for-2.5 01/12] qjson: Apply nesting limit more sanely Markus Armbruster
                   ` (11 more replies)
  0 siblings, 12 replies; 26+ messages in thread
From: Markus Armbruster @ 2015-11-25 21:23 UTC (permalink / raw)
  To: qemu-devel; +Cc: pbonzini, lcapitulino

This is a fusion of my "[PATCH v2 0/4] json-streamer: Fix up code to
limit nesting and size" and Paolo's "[PATCH v2 for-2.5? 0/4] qjson:
save a lot of memory", with four straightforward cleanups thrown in to
simplify the later patches.

PATCH 01-03 are about the nesting limit.

PATCH 04-07 are cleanups.

PATCH 09-11 are Paolo's, except I pretty much rewrote PATCH 10 to
fully kill the backtracking.

PATCH 12 limits the number of tokens in addition to the total token
size.

Why 2.5?  In my opinion:

* PATCH 01-03 are simple fixes plus a new test.

* PATCH 04-11 reduce memory usage dramatically.  Makes check-qjson's
  large_dict test (~100k tokens) run more than ten times faster.

  If this is deemed too risky for 2.5, PATCH 12 needs to be replaced
  by v2 (different commit message, *much* lower limit).

* PATCH 12 is simple enough.

Markus Armbruster (9):
  qjson: Apply nesting limit more sanely
  qjson: Don't crash when input exceeds nesting limit
  check-qjson: Add test for JSON nesting depth limit
  qjson: Spell out some silent assumptions
  qjson: Give each of the six structural chars its own token type
  qjson: Inline token_is_keyword() and simplify
  qjson: Inline token_is_escape() and simplify
  qjson: Convert to parser to recursive descent
  qjson: Limit number of tokens in addition to total size

Paolo Bonzini (3):
  qjson: replace QString in JSONLexer with GString
  qjson: store tokens in a GQueue
  qjson: surprise, allocating 6 QObjects per token is expensive

 include/qapi/qmp/json-lexer.h    |  16 +-
 include/qapi/qmp/json-parser.h   |   4 +-
 include/qapi/qmp/json-streamer.h |  16 +-
 monitor.c                        |   2 +-
 qga/main.c                       |   2 +-
 qobject/json-lexer.c             |  48 +++---
 qobject/json-parser.c            | 330 ++++++++++++---------------------------
 qobject/json-streamer.c          |  89 ++++++-----
 qobject/qjson.c                  |   2 +-
 tests/check-qjson.c              |  25 +++
 tests/libqtest.c                 |   2 +-
 11 files changed, 223 insertions(+), 313 deletions(-)

-- 
2.4.3

^ permalink raw reply	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2015-11-26  9:07 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-11-25 21:23 [Qemu-devel] [PATCH v3 for-2.5 00/12] qjson: Fix crash & save a lot of memory Markus Armbruster
2015-11-25 21:23 ` [Qemu-devel] [PATCH v3 for-2.5 01/12] qjson: Apply nesting limit more sanely Markus Armbruster
2015-11-25 21:23 ` [Qemu-devel] [PATCH v3 for-2.5 02/12] qjson: Don't crash when input exceeds nesting limit Markus Armbruster
2015-11-25 21:23 ` [Qemu-devel] [PATCH v3 for-2.5 03/12] check-qjson: Add test for JSON nesting depth limit Markus Armbruster
2015-11-25 21:23 ` [Qemu-devel] [PATCH v3 for-2.5 04/12] qjson: Spell out some silent assumptions Markus Armbruster
2015-11-25 22:00   ` Eric Blake
2015-11-25 21:23 ` [Qemu-devel] [PATCH v3 for-2.5 05/12] qjson: Give each of the six structural chars its own token type Markus Armbruster
2015-11-25 22:05   ` Eric Blake
2015-11-26  8:22     ` Markus Armbruster
2015-11-25 21:23 ` [Qemu-devel] [PATCH v3 for-2.5 06/12] qjson: Inline token_is_keyword() and simplify Markus Armbruster
2015-11-25 22:09   ` Eric Blake
2015-11-26  8:26     ` Markus Armbruster
2015-11-25 21:23 ` [Qemu-devel] [PATCH v3 for-2.5 07/12] qjson: Inline token_is_escape() " Markus Armbruster
2015-11-25 22:14   ` Eric Blake
2015-11-26  8:34     ` Markus Armbruster
2015-11-25 21:23 ` [Qemu-devel] [PATCH v3 for-2.5 08/12] qjson: replace QString in JSONLexer with GString Markus Armbruster
2015-11-25 22:16   ` Eric Blake
2015-11-25 21:23 ` [Qemu-devel] [PATCH v3 for-2.5 09/12] qjson: Convert to parser to recursive descent Markus Armbruster
2015-11-25 22:22   ` Eric Blake
2015-11-26  8:37     ` Markus Armbruster
2015-11-26  9:07   ` Markus Armbruster
2015-11-25 21:23 ` [Qemu-devel] [PATCH v3 for-2.5 10/12] qjson: store tokens in a GQueue Markus Armbruster
2015-11-25 22:25   ` Eric Blake
2015-11-25 21:23 ` [Qemu-devel] [PATCH v3 for-2.5 11/12] qjson: surprise, allocating 6 QObjects per token is expensive Markus Armbruster
2015-11-25 22:31   ` Eric Blake
2015-11-25 21:23 ` [Qemu-devel] [PATCH v3 for-2.5 12/12] qjson: Limit number of tokens in addition to total size Markus Armbruster

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.