The original code works but it's a bit iffy. The end of loop test should be something like "board_type[i] != '\0'" but instead it is is "i < board_type[i]". Fortunately, those two tests are equivalent so long as the "board_type" is not an empty string. It's much simpler to just call strreplace() instead. Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> --- drivers/bluetooth/btbcm.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/drivers/bluetooth/btbcm.c b/drivers/bluetooth/btbcm.c index 3006e2a0f37e..bcf254e2b138 100644 --- a/drivers/bluetooth/btbcm.c +++ b/drivers/bluetooth/btbcm.c @@ -498,7 +498,6 @@ static const char *btbcm_get_board_name(struct device *dev) char *board_type; const char *tmp; int len; - int i; root = of_find_node_by_path("/"); if (!root) @@ -511,10 +510,7 @@ static const char *btbcm_get_board_name(struct device *dev) len = strlen(tmp) + 1; board_type = devm_kzalloc(dev, len, GFP_KERNEL); strscpy(board_type, tmp, len); - for (i = 0; i < board_type[i]; i++) { - if (board_type[i] == '/') - board_type[i] = '-'; - } + strreplace(board_type, '/', '-'); of_node_put(root); return board_type; -- 2.35.1