On Mon, Jan 10, 2022 at 04:20:36PM +0100, Stefan Sperling wrote: > On Mon, Jan 10, 2022 at 03:50:45PM +0100, Tobias Heider wrote: > > Makes sense. I also fixed the one in sdmmc_mem_send_cxd_data(). > > Doesn't build here, there a few errors like this: > > /usr/src/sys/dev/sdmmc/sdmmc_mem.c:483:1: error: unused label 'out' > [-Werror,-Wu > nused-label] > > I like Visa's idea of using early 'return ENOMEM' instead of goto.
I removed the unused goto labels and cleaned up the error handling. We don't need to check for (ptr != NULL) and in one case we can merge two 'if (error == 0)' blocks. ok? Index: sdmmc_mem.c =================================================================== RCS file: /mount/openbsd/cvs/src/sys/dev/sdmmc/sdmmc_mem.c,v retrieving revision 1.36 diff -u -p -r1.36 sdmmc_mem.c --- sdmmc_mem.c 27 Mar 2021 14:36:28 -0000 1.36 +++ sdmmc_mem.c 10 Jan 2022 05:20:37 -0000 @@ -466,7 +466,7 @@ sdmmc_mem_send_scr(struct sdmmc_softc *s ptr = malloc(datalen, M_DEVBUF, M_NOWAIT | M_ZERO); if (ptr == NULL) - goto out; + return ENOMEM; memset(&cmd, 0, sizeof(cmd)); cmd.c_data = ptr; @@ -480,9 +480,7 @@ sdmmc_mem_send_scr(struct sdmmc_softc *s if (error == 0) memcpy(scr, ptr, datalen); -out: - if (ptr != NULL) - free(ptr, M_DEVBUF, datalen); + free(ptr, M_DEVBUF, datalen); return error; } @@ -528,10 +526,8 @@ sdmmc_mem_send_cxd_data(struct sdmmc_sof int error = 0; ptr = malloc(datalen, M_DEVBUF, M_NOWAIT | M_ZERO); - if (ptr == NULL) { - error = ENOMEM; - goto out; - } + if (ptr == NULL) + return ENOMEM; memset(&cmd, 0, sizeof(cmd)); cmd.c_data = ptr; @@ -549,9 +545,7 @@ sdmmc_mem_send_cxd_data(struct sdmmc_sof if (error == 0) memcpy(data, ptr, datalen); -out: - if (ptr != NULL) - free(ptr, M_DEVBUF, datalen); + free(ptr, M_DEVBUF, datalen); return error; } @@ -608,7 +602,7 @@ sdmmc_mem_sd_switch(struct sdmmc_functio ptr = malloc(statlen, M_DEVBUF, M_NOWAIT | M_ZERO); if (ptr == NULL) - goto out; + return ENOMEM; memset(&cmd, 0, sizeof(cmd)); cmd.c_data = ptr; @@ -620,15 +614,12 @@ sdmmc_mem_sd_switch(struct sdmmc_functio cmd.c_flags = SCF_CMD_ADTC | SCF_CMD_READ | SCF_RSP_R1; error = sdmmc_mmc_command(sc, &cmd); - if (error == 0) + if (error == 0) { memcpy(status, ptr, statlen); - -out: - if (ptr != NULL) - free(ptr, M_DEVBUF, statlen); - - if (error == 0) sdmmc_be512_to_bitfield512(status); + } + + free(ptr, M_DEVBUF, statlen); return error; }