]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
s390/cpum_sf: Use kzalloc and minor changes
authorThomas Richter <tmricht@linux.ibm.com>
Thu, 19 Dec 2019 13:56:13 +0000 (14:56 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 1 Oct 2020 11:17:28 +0000 (13:17 +0200)
[ Upstream commit 32dab6828c42f087439d3e2617dc7283546bd8f7 ]

Use kzalloc() to allocate auxiliary buffer structure initialized
with all zeroes to avoid random value in trace output.

Avoid double access to SBD hardware flags.

Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/s390/kernel/perf_cpum_sf.c

index 229e1e2f8253aa4b50efc005cd38a884e717f1db..996e447ead3a685f01b259f088de76436b93d25e 100644 (file)
@@ -1429,8 +1429,8 @@ static int aux_output_begin(struct perf_output_handle *handle,
                idx = aux->empty_mark + 1;
                for (i = 0; i < range_scan; i++, idx++) {
                        te = aux_sdb_trailer(aux, idx);
-                       te->flags = te->flags & ~SDB_TE_BUFFER_FULL_MASK;
-                       te->flags = te->flags & ~SDB_TE_ALERT_REQ_MASK;
+                       te->flags &= ~(SDB_TE_BUFFER_FULL_MASK |
+                                      SDB_TE_ALERT_REQ_MASK);
                        te->overflow = 0;
                }
                /* Save the position of empty SDBs */
@@ -1477,8 +1477,7 @@ static bool aux_set_alert(struct aux_buffer *aux, unsigned long alert_index,
        te = aux_sdb_trailer(aux, alert_index);
        do {
                orig_flags = te->flags;
-               orig_overflow = te->overflow;
-               *overflow = orig_overflow;
+               *overflow = orig_overflow = te->overflow;
                if (orig_flags & SDB_TE_BUFFER_FULL_MASK) {
                        /*
                         * SDB is already set by hardware.
@@ -1712,7 +1711,7 @@ static void *aux_buffer_setup(struct perf_event *event, void **pages,
        }
 
        /* Allocate aux_buffer struct for the event */
-       aux = kmalloc(sizeof(struct aux_buffer), GFP_KERNEL);
+       aux = kzalloc(sizeof(struct aux_buffer), GFP_KERNEL);
        if (!aux)
                goto no_aux;
        sfb = &aux->sfb;