From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4AF76755FB; Mon, 29 Jan 2024 17:16:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706548596; cv=none; b=pKaYGrZkOEz+eCg1TyuvMgAKeVUV1H1FSeQu5gDPZMI0ZLLVeqRzcEF++4EazyuAaS/6lTvJgLPdVaQBMEQMEsNWcbnzvGlbsRUgVYa1iZIrpoCs1l9AutI8iDtZbL6Cq9YKfn6zzB2KF8I/Q4dPGpfDzFf9YmwJ6hBj9Pnz91Y= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706548596; c=relaxed/simple; bh=9/3nGjYUicCzJNvKaMaR53/3yn6/iE9TpCCJGoEXcPI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=aYYR18oVlkmb4WhdhEGLMQNhsubdSj7hA8XarwyftzMzkfCrtwgBT1hmyhy0UNnUG19zG9rqfquu2RWm2BqAc0x+hZTQJxu6vAHFNfljNcAB32HyIGmERl9ntg4ibwwu89k+vmIzDN/ahnFD4hXgz3m/fbJapOWLynCPx1HvlL4= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=CEzG3G5+; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="CEzG3G5+" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 11547C433F1; Mon, 29 Jan 2024 17:16:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1706548596; bh=9/3nGjYUicCzJNvKaMaR53/3yn6/iE9TpCCJGoEXcPI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=CEzG3G5+phehDcYw1ZWevbntg2NgFSPUh5UBJvOFi/pzlaGMM7pWUN1Mm183Izy2f pNfLp5/naDEwT4OGmgq5HmSMnLCtGnl22+fcCXtq0TYA2K1ZjuWkeqVIX/nZkwNAh6 1vidM+J118Lf+qnhU55gVSuH+dh+PwcS6/aDpAQQ= From: Greg Kroah-Hartman To: stable@vger.kernel.org Cc: Greg Kroah-Hartman , patches@lists.linux.dev, Dan Carpenter , Robert Foss Subject: [PATCH 6.6 256/331] drm/bridge: nxp-ptn3460: fix i2c_master_send() error checking Date: Mon, 29 Jan 2024 09:05:20 -0800 Message-ID: <20240129170022.381138541@linuxfoundation.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240129170014.969142961@linuxfoundation.org> References: <20240129170014.969142961@linuxfoundation.org> User-Agent: quilt/0.67 X-stable: review X-Patchwork-Hint: ignore Precedence: bulk X-Mailing-List: patches@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 6.6-stable review patch. If anyone has any objections, please let me know. ------------------ From: Dan Carpenter commit 914437992876838662c968cb416f832110fb1093 upstream. The i2c_master_send/recv() functions return negative error codes or the number of bytes that were able to be sent/received. This code has two problems. 1) Instead of checking if all the bytes were sent or received, it checks that at least one byte was sent or received. 2) If there was a partial send/receive then we should return a negative error code but this code returns success. Fixes: a9fe713d7d45 ("drm/bridge: Add PTN3460 bridge driver") Cc: stable@vger.kernel.org Signed-off-by: Dan Carpenter Reviewed-by: Robert Foss Signed-off-by: Robert Foss Link: https://patchwork.freedesktop.org/patch/msgid/0cdc2dce-ca89-451a-9774-1482ab2f4762@moroto.mountain Signed-off-by: Greg Kroah-Hartman --- drivers/gpu/drm/bridge/nxp-ptn3460.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) --- a/drivers/gpu/drm/bridge/nxp-ptn3460.c +++ b/drivers/gpu/drm/bridge/nxp-ptn3460.c @@ -56,13 +56,13 @@ static int ptn3460_read_bytes(struct ptn ret = i2c_master_send(ptn_bridge->client, &addr, 1); if (ret <= 0) { DRM_ERROR("Failed to send i2c command, ret=%d\n", ret); - return ret; + return ret ?: -EIO; } ret = i2c_master_recv(ptn_bridge->client, buf, len); - if (ret <= 0) { + if (ret != len) { DRM_ERROR("Failed to recv i2c data, ret=%d\n", ret); - return ret; + return ret < 0 ? ret : -EIO; } return 0; @@ -78,9 +78,9 @@ static int ptn3460_write_byte(struct ptn buf[1] = val; ret = i2c_master_send(ptn_bridge->client, buf, ARRAY_SIZE(buf)); - if (ret <= 0) { + if (ret != ARRAY_SIZE(buf)) { DRM_ERROR("Failed to send i2c command, ret=%d\n", ret); - return ret; + return ret < 0 ? ret : -EIO; } return 0;