]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
printk: nbcon: Remove return value for write_atomic()
authorJohn Ogness <john.ogness@linutronix.de>
Tue, 20 Aug 2024 06:29:32 +0000 (08:35 +0206)
committerPetr Mladek <pmladek@suse.com>
Wed, 21 Aug 2024 12:56:23 +0000 (14:56 +0200)
The return value of write_atomic() does not provide any useful
information. On the contrary, it makes things more complicated
for the caller to appropriately deal with the information.

Change write_atomic() to not have a return value. If the
message did not get printed due to loss of ownership, the
caller will notice this on its own. If ownership was not lost,
it will be assumed that the driver successfully printed the
message and the sequence number for that console will be
incremented.

Signed-off-by: John Ogness <john.ogness@linutronix.de>
Reviewed-by: Petr Mladek <pmladek@suse.com>
Link: https://lore.kernel.org/r/20240820063001.36405-7-john.ogness@linutronix.de
Signed-off-by: Petr Mladek <pmladek@suse.com>
include/linux/console.h
kernel/printk/nbcon.c

index 31a8f5b85f5d7483c402e0cff64a6e4cef1a2893..577b157fe4fb1a9bb0aff7669cfe53e0a1e40108 100644 (file)
@@ -345,7 +345,7 @@ struct console {
        struct hlist_node       node;
 
        /* nbcon console specific members */
-       bool                    (*write_atomic)(struct console *con,
+       void                    (*write_atomic)(struct console *con,
                                                struct nbcon_write_context *wctxt);
        atomic_t                __private nbcon_state;
        atomic_long_t           __private nbcon_seq;
index 931b8f086902b5f464c2df3e121b5b534c5df794..f279f839741af2413b07cebfeb3382152a3ca395 100644 (file)
@@ -885,7 +885,6 @@ static bool nbcon_emit_next_record(struct nbcon_write_context *wctxt)
        unsigned long con_dropped;
        struct nbcon_state cur;
        unsigned long dropped;
-       bool done;
 
        /*
         * The printk buffers are filled within an unsafe section. This
@@ -925,16 +924,16 @@ static bool nbcon_emit_next_record(struct nbcon_write_context *wctxt)
        wctxt->unsafe_takeover = cur.unsafe_takeover;
 
        if (con->write_atomic) {
-               done = con->write_atomic(con, wctxt);
+               con->write_atomic(con, wctxt);
        } else {
-               nbcon_context_release(ctxt);
+               /*
+                * This function should never be called for legacy consoles.
+                * Handle it as if ownership was lost and try to continue.
+                */
                WARN_ON_ONCE(1);
-               done = false;
-       }
-
-       /* If not done, the emit was aborted. */
-       if (!done)
+               nbcon_context_release(ctxt);
                return false;
+       }
 
        /*
         * Since any dropped message was successfully output, reset the