Fix: handle capture page faults as skip field
[lttng-modules.git] / src / lib / msgpack / msgpack.c
index e7ff1e393cf33ac67625dbed2193edd475569cd1..54d5692679cd926fec304dc4bff0821142e6197e 100644 (file)
@@ -130,10 +130,7 @@ static inline int lttng_msgpack_append_user_buffer(
        }
 
        if (lttng_copy_from_user_check_nofault(writer->write_pos, ubuf, length)) {
-               /*
-                * After a successful strlen user, a page fault on copy is handled by
-                * considering the string as empty, returning a success.
-                */
+               ret = -1;
                goto end;
        }
        writer->write_pos += length;
@@ -444,12 +441,6 @@ int lttng_msgpack_write_user_str(struct lttng_msgpack_writer *writer,
                goto end;
        }
 
-       /*
-        * Handle empty string and strlen user page fault as empty string.
-        */
-       if (length == 1)
-               return lttng_msgpack_write_str(writer, "");
-
        if (length <= MSGPACK_FIXSTR_MAX_LENGTH)
                ret = lttng_msgpack_encode_user_fixstr(writer, ustr, length);
        else
@@ -567,6 +558,18 @@ end:
        return ret;
 }
 
+int lttng_msgpack_save_writer_pos(struct lttng_msgpack_writer *writer, uint8_t **pos)
+{
+       *pos = writer->write_pos;
+       return 0;
+}
+
+int lttng_msgpack_restore_writer_pos(struct lttng_msgpack_writer *writer, uint8_t *pos)
+{
+       writer->write_pos = pos;
+       return 0;
+}
+
 void lttng_msgpack_writer_init(struct lttng_msgpack_writer *writer,
                uint8_t *buffer, size_t size)
 {
This page took 0.024431 seconds and 4 git commands to generate.