| Message ID | 20251112090924.46295-1-johannes.goede@oss.qualcomm.com |
|---|---|
| Headers | show
Return-Path: <libcamera-devel-bounces@lists.libcamera.org> X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 15CD8C3263 for <parsemail@patchwork.libcamera.org>; Wed, 12 Nov 2025 09:09:39 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 15C4A60A9D; Wed, 12 Nov 2025 10:09:38 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.b="eo91wK3x"; dkim=pass (2048-bit key; unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="ay3EH0EM"; dkim-atps=neutral Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id BAD6E606E6 for <libcamera-devel@lists.libcamera.org>; Wed, 12 Nov 2025 10:09:35 +0100 (CET) Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5AC6SjZ7350148 for <libcamera-devel@lists.libcamera.org>; Wed, 12 Nov 2025 09:09:34 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:message-id:mime-version :subject:to; s=qcppdkim1; bh=RkffvbpRnRcOvReYMPahCz1Agckc7PO+hYW NzhFRvqA=; b=eo91wK3x3Asyf+TAifxLT8DUGwMxJazBbIr9ax9M08jnxSNIqWL +rbin8wpQQklHmY/ROJIZYl8F16Evobr0itwm60g4RaZoQA9wJ/tHR63S8Bjk9L5 J0DQx7zCz48dNOXXoWoPHZ6+gC+FiQsG46OLSY+5zCza4bfZvkgpBNVq7shXWWx3 r7Ae7O/sqrvAO5DQ4NKHE2/FGRd+rbyHmnLniHcOa1MUoaMF4Ha+fJqPRqulQsJf 9BAbV6x/YzniQ82TQoXkC5Z4BR9xf1Vx66yAEmhGnoBHXGPZW7GJdXcsR+q8YNnR 3JovnnmhqQ5/jb1/mCYMWT1I0FN0HuIKW1w== Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4acn0nrf23-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for <libcamera-devel@lists.libcamera.org>; Wed, 12 Nov 2025 09:09:33 +0000 (GMT) Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-4e8984d8833so28677951cf.0 for <libcamera-devel@lists.libcamera.org>; Wed, 12 Nov 2025 01:09:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1762938572; x=1763543372; darn=lists.libcamera.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=RkffvbpRnRcOvReYMPahCz1Agckc7PO+hYWNzhFRvqA=; b=ay3EH0EM+u3ZnCrsIfN2ArIx1CA9ZIDiKNAMc1zI/rGONG9hRhwCzs4BGeR24zR2aB V6wi6MZONfCu4sR5ZpyriupDBG0I3zsJHAnLSXwxretAf+WYyvPOsQpk00DluapASCgD Obz/WbW1qnAul1BVMildmIm/GOb/j7WWn+BOyTEuCZvAt355qLCBl9O7lCj7CScrI67X bAsyXbdAXWViZeRKHYGBKoPw5IZD5pc3zBklXU3fMjFTR3na5w1SBqzLXQqA2iM+f/hB o2DkF6j3AJR9sxcF3uVqnmFIDEAsbFkzkntc7ZT0xLoe3crOMIIIerYM1N4WUV7wHDRw 4vGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762938572; x=1763543372; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=RkffvbpRnRcOvReYMPahCz1Agckc7PO+hYWNzhFRvqA=; b=O7ocBdAKpK59n7ahI23BptCOhlIisaHhFtRc+aZeB8vuY6K/YfwAKhTY2wxQjd1TK6 R3faYmKM3w8Fjt0h0VnyEHJIy1yHXyGsr7J3LfnXPhtrtgr1w6oooXEk2dio7qPEG3VV ztjkT7gU/nEpUtSW/MliU5o3+Fqc5spYcfU2fWPSXXNS6kCbzs22Qjx6cQ6Nts5Gcmmp 3gjsia9pu3r6QKlwka7JqxffGVSI9fUWvt2N3xutrGD/xPEOPHw/Ro+C8yqfJY6GteyC 8pDT9/o/ZmRu3RGcx4hfUi3XQSPQQ0zuYdMoCQxouc322qdYzGob7UtglgRNaN3jfB+9 qP3w== X-Gm-Message-State: AOJu0Yy9/T9ogOckAf253BGcs8tP99ffq9q62jCddeutD1uYSKScV4y/ nVRUsRZe2TvTCiJY5M46UJ2vwIyoS6FPuKgEYR+JT36J3xMueRbVyiWJTVvcZn9sNBBsj9ZUhxN FuI9ijFlV3BI8Ye0/0Och6Wgg9zcxnX1HTY0MG4Dua8TxmeboiFcyKINn3M4+Q+QKEpSGtOTLKP 1tPJbaF0q/ X-Gm-Gg: ASbGncukKu/OZe4su4jV6iblCu6cqx6SBV01DAnQXebcelQKg/dJEG49h1O0GfamgQt g3NCbmW6JiAgxIXH4PWyF/VClrg6FCJ8rtANyYPCHzza6bbMzbzpts6k+Qe4T/PK5ukf/8EiTDY ax0IGZKrlinY5YkA4mUXe/3hcXQQ9aC4WZfcQkT722b9q+12jeEn8Zx+geFrqMcs1r01e5c6qJA nI0ifvSm7o7h6uwMIn+L07trFtQfYae1vys7Zb8OWNlIOEcu6rr1f11yb7fAVsZikzXUabwq8A+ BVxiUWw3R+pKFipalnOpjO8snJ/ea9B9vEAJBtF2p/0gKMNxo9CduDnqwycmX7rPqtu3wrH3YRW Z5xSFu5WOV6WbPVALfJLStdWXV1DUEUlVDdI/ExLRk5N2Xb1qjQijscQqrZZM9G5Y0KwGZg1VQT 7/1OxQUkx8x/Cz9A== X-Received: by 2002:a05:622a:10a:b0:4ed:aa7b:e1b6 with SMTP id d75a77b69052e-4eddbc7c12emr28707571cf.12.1762938572408; Wed, 12 Nov 2025 01:09:32 -0800 (PST) X-Google-Smtp-Source: AGHT+IHNyXiMlexaZjKTQcy4vqYlHGr/TJIcLjeSJvGNWH0Bl7j0ofMvibGMpVUMpZkwaVk2wDKlGQ== X-Received: by 2002:a05:622a:10a:b0:4ed:aa7b:e1b6 with SMTP id d75a77b69052e-4eddbc7c12emr28704141cf.12.1762938565925; Wed, 12 Nov 2025 01:09:25 -0800 (PST) Received: from shalem (2001-1c00-0c32-7800-5bfa-a036-83f0-f9ec.cable.dynamic.v6.ziggo.nl. [2001:1c00:c32:7800:5bfa:a036:83f0:f9ec]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b72bfa11367sm1530114066b.68.2025.11.12.01.09.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Nov 2025 01:09:25 -0800 (PST) From: Hans de Goede <johannes.goede@oss.qualcomm.com> To: libcamera-devel@lists.libcamera.org Cc: Hans de Goede <johannes.goede@oss.qualcomm.com> Subject: [RFC 0/1] Fix softISP crash on 10/12bpp sparse input frames Date: Wed, 12 Nov 2025 10:09:23 +0100 Message-ID: <20251112090924.46295-1-johannes.goede@oss.qualcomm.com> X-Mailer: git-send-email 2.51.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Proofpoint-GUID: Zn-rfebyE1RK5F7YSshbBq4OrpdvQcOj X-Proofpoint-ORIG-GUID: Zn-rfebyE1RK5F7YSshbBq4OrpdvQcOj X-Authority-Analysis: v=2.4 cv=acRsXBot c=1 sm=1 tr=0 ts=69144ecd cx=c_pps a=WeENfcodrlLV9YRTxbY/uA==:117 a=xqWC_Br6kY4A:10 a=6UeiqGixMTsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=20KFwNOVAAAA:8 a=Q41pJdeu3oAlCBGPiJAA:9 a=kacYvNCVWA4VmyqE58fU:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTEyMDA3MiBTYWx0ZWRfX+ymBv/md0XV2 QxuQ24WCJx+k6+U9S9NZQYoxBW0VHiHq5u7V7Vqh1zMDVGT2q4MfxU3KlZdY9csI5z9HaVvYz8/ YKYzL2Ojler5mAvpfqVU95ARenGIyU2wCIyS/usS+8Ms2Rh5fBcyQ6bxSs1DrLlfWzjREIsImP+ S9jh80Ol8gOQ+dKpihM4xXvEOFUAxD+MsUB0G9E9oYXMA6uWyKjZ0Qb/M4aZNFlpO71htG5IAea SpZGWKD9ZRDCn4KSP9KsTmEe5g+BjlFucg4CMQMakcMwxhHQRzc9n+4ghzwd1M92p4VCGmTg8DG xurXH4I4C6Tk/8KVKZV7l/bNlV7cC6oaEtmjZddXl+h8QmAnA3UE5pDLkFrKMxhFtMNJcjVHlCm oVfTChdlLKBGMw2vnInbPADUTGltew== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293, Aquarius:18.0.1121, Hydra:6.1.9, FMLib:17.12.100.49 definitions=2025-11-12_03,2025-11-11_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 phishscore=0 bulkscore=0 clxscore=1015 spamscore=0 lowpriorityscore=0 malwarescore=0 adultscore=0 impostorscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511120072 X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: <libcamera-devel.lists.libcamera.org> List-Unsubscribe: <https://lists.libcamera.org/options/libcamera-devel>, <mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe> List-Archive: <https://lists.libcamera.org/pipermail/libcamera-devel/> List-Post: <mailto:libcamera-devel@lists.libcamera.org> List-Help: <mailto:libcamera-devel-request@lists.libcamera.org?subject=help> List-Subscribe: <https://lists.libcamera.org/listinfo/libcamera-devel>, <mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe> Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" <libcamera-devel-bounces@lists.libcamera.org> |
| Series |
|
| Related |
show
|
Hi All, As reported here https://bugzilla.redhat.com/show_bug.cgi?id=2402746#c20 there are several places where the swstats / debayer CPU code will do out of bounds array accesses when processing a corrupt input frame in 10/12 bpp sparse format. The issue is that these corrupt frames which store 10 or 12 bpp pixels in 16 bit words may have the high bits set leading to e.g. pixel values > 1023 for 10 bpp input data, which in turn leads to out of bounds array accesses. Here are 2 example backtraces: #4 0x00007fba4900b084 in std::__glibcxx_assert_fail (file=file@entry=0x7fba495b7344 "/usr/include/c++/15/array", line=line@entry=210, function=function@entry=0x7fba495b5d68 "constexpr std::array<_Tp, _Nm>::value_type& std::array<_Tp, _Nm>::operator[](size_type) [with _Tp = unsigned int; long unsigned int _Nm = 64; reference = unsigned int&; size_type = long unsigned int]", condition=condition@entry=0x7fba495b6df2 "__n < this->size()") at ../../../../../libstdc++-v3/src/c++11/assert_fail.cc:41 #5 0x00007fba49423d15 in std::array<unsigned int, 64ul>::operator[] (__n=<optimized out>, this=<optimized out>) at /usr/include/c++/15/array:210 #6 0x00007fba49423d1b in std::array<unsigned int, 64ul>::operator[] (this=<optimized out>, __n=<optimized out>) at /usr/include/c++/15/array:210 #7 libcamera::SwStatsCpu::statsBGGR10Line0 (this=<optimized out>, src=<optimized out>) at ../src/libcamera/software_isp/swstats_cpu.cpp:219 #8 0x00007fba4951d13b in libcamera::SwStatsCpu::processLine0 (frame=0, y=0, this=<optimized out>, src=0x7fba427f89c0) at ../src/libcamera/software_isp/swstats_cpu.h:63 #9 libcamera::SwStatsCpu::processLine0 (this=<optimized out>, frame=0, y=0, src=0x7fba427f89c0) at ../src/libcamera/software_isp/swstats_cpu.h:54 #10 libcamera::DebayerCpu::process2 (this=this@entry=0x7fba38053c20, frame=frame@entry=0, src=0x7fba48089d08 <error: Cannot access memory at address 0x7fba48089d08>, Where swstats_cpu.cpp:219 points SWSTATS_ACCUMULATE_LINE_STATS() which accesses the yHistogram array. #4 0x00007f936ca0b084 in std::__glibcxx_assert_fail (file=file@entry=0x7f936cfb727c "/usr/include/c++/15/array", line=line@entry=210, function=function@entry=0x7f936cfb5760 "constexpr std::array<_Tp, _Nm>::value_type& std::array<_Tp, _Nm>::operator[](size_type) [with _Tp = unsigned char; long unsigned int _Nm = 256; reference = unsigned char&; size_type = long unsigned in"..., condition=condition@entry=0x7f936cfb6d2a "__n < this->size()") at ../../../../../libstdc++-v3/src/c++11/assert_fail.cc:41 #5 0x00007f936ce22fd3 in std::array<unsigned char, 256ul>::operator[] (__n=<optimized out>, this=<optimized out>) at /usr/include/c++/15/array:210 #6 0x00007f936cf21102 in std::array<unsigned char, 256ul>::operator[] (this=<optimized out>, __n=<optimized out>) at ../src/libcamera/software_isp/debayer_cpu.cpp:158 #7 libcamera::DebayerCpu::debayer10_BGBG_BGR888<true, false> (this=<optimized out>, dst=<optimized out>, src=<optimized out>) at ../src/libcamera/software_isp/debayer_cpu.cpp:164 Where debayer_cpu.cpp:164 ends up calling the STORE_PIXEL() macro which accesses various lookup tables. The single patch in this series should fix this. This is marked as a RFC for now because I'm waiting on testing feedback from the reporter. Regards, Hans Hans de Goede (1): libcamera: debayer_cpu: Mask out unused bits from > 8bpp non packed src data src/libcamera/software_isp/debayer_cpu.cpp | 41 ++++++++++++++++++++-- src/libcamera/software_isp/debayer_cpu.h | 6 ++++ 2 files changed, 45 insertions(+), 2 deletions(-)