From patchwork Sun May 23 14:54:33 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 27928 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:b214:0:0:0:0:0 with SMTP id b20csp2188719iof; Sun, 23 May 2021 07:55:18 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxDOvFCJFH9VvWrxvFKmfXDT6KhkkO3eo4tnuvSIvxy35+rp/1WIZd+bIGnHqu/+ByEnkVT X-Received: by 2002:a17:906:c1ca:: with SMTP id bw10mr19175897ejb.512.1621781718586; Sun, 23 May 2021 07:55:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621781718; cv=none; d=google.com; s=arc-20160816; b=Lo/8wP30I3ij7V5Jd20hMy3l2R6tR5yXCH06KYq6r/AGClVnc2KG/e4o1Hk+3uST97 sVf8GKG/9fK7/yYwgQ4A979wmAepcJzalaD3ZOHFwCqJQWGUGqpXYhlfsYD0kUjdUxbo 7UhOIEb4huzdZV6a9WabEwtnxdCwlcu6Kk/sL7hwjZUKxoqdvS3vZ6k1HHNCr+ELTciB 0BiL4Iff04WZcfwgSlgTKsUYj2YEko53Pr0y/pP8VZh1OtZU9V8a8iCwY3RlPtYJPv/K 3sV1H4l3XcLZQk95uE5+Qp2+4vPl1ttrPvUvmi1SLQWx9/rVFrM1qYHcfLsTzVjv98om 93vA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=+FbsmybFqFjy6GDE5bzMNfQWflIsSM+xCD8kORxrLOY=; b=gXr+roZACYQzyiFb6t2W5zJmk9nATz5fE9lIAOjfGrR4vv+QEWPHT3xB4FxECx+DKs gW52hG0UEXRZS9KFl+IZ9+GpR3Amr1JURrjJSOmfvblMm/V819i4JPoiU8J26NSK2p/R +YBRyS4ktmT+TRwh4BKcE0svIlltTJG0xYwIchA/y9v6YWfqsO0YVYCGPcaNYAb+0Kdl twVVe5B7uoSlT89rNbjxfSOS7OO2nJrSXLliKns10OIVyc2byRVyhgWKwbey2hjAe/HL FTUM665Pnzvk1eArbFNfLjxj74a2TBiR9CNb+bZJYIg6BZh1Ci10xurEZMcN9ARImSVI YNoA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=k1zu5zoB; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id q19si10215717ejx.661.2021.05.23.07.55.18; Sun, 23 May 2021 07:55:18 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=k1zu5zoB; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1B3C16881A9; Sun, 23 May 2021 17:54:59 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt1-f176.google.com (mail-qt1-f176.google.com [209.85.160.176]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id F29E5680C28 for ; Sun, 23 May 2021 17:54:49 +0300 (EEST) Received: by mail-qt1-f176.google.com with SMTP id t17so1126773qta.11 for ; Sun, 23 May 2021 07:54:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=PC984BlsCcXrvNpNNkb26+RNAJphbhYIzSygmBE6NyI=; b=k1zu5zoB904Z0orbilSnAXSWd+JO+aEYc5wYevA80Bu+YJxxVkI3i1Fevf7E743vUF K30R4NvnsSYoahucw3bBvWjYB6UFIrVINwTvz7XPamrloKqU7BCEvq6dbsVLFIgGrV1X wVZkqGorRj9s+rx6rsMBvpy/Ue4zm/QPXYsMn9bqP7OEM+bsUJs4IKuy0q3WMam7eOSf MrsyTsUdBdY9dPUOm4wJMPS6pGaXT78W3bCyB1C5sO8qwWEFB716WelejbMm6BLK7o09 VxCDLcut/o23O42xJgTCvw+baF/6PYCLR3/JoJkuQrhtMvt3wd0wa22cqZ9SCw5cjXGl CktA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=PC984BlsCcXrvNpNNkb26+RNAJphbhYIzSygmBE6NyI=; b=cW0qFixsXl7DYIqioexcOcJYEivqi0gknkWCjGVAObpCNDVd03wzjEkme2H+GpSiPt WGt3gXJvgRN51B6qPdx1wxEE39VwnZ1z7bnjZyBIBFWd8ioU+xm0DUyMkapuek8wHaJ2 bT08nm+zjMq+4CCbVQmqjhBx4aod0cjWK9sKk3CT1REAYkU0wEiJh8XWwaYOl/SQXQ9m hTHz9eZPW+i+r2XeLHaCBeGq0zx7QwrmfC500lyjPZSWFO37bnrx3LjIim3PANs6FrbF PuTUhyDaaCs6BSmgopGeSMMhTcPnnY2t5iEGADIY1p6nb1yDO7A0oHbe+sYmuxzls5AU W/3w== X-Gm-Message-State: AOAM5337luMMnTyDZZadXDH8B9DR7RjtSLEc2m6uBCxxan0sn2Yw5q8Y dUML3nvdR3v3+768slZeRftEr2gUIhs= X-Received: by 2002:a05:622a:148a:: with SMTP id t10mr22176066qtx.214.1621781688704; Sun, 23 May 2021 07:54:48 -0700 (PDT) Received: from localhost.localdomain ([191.83.214.167]) by smtp.gmail.com with ESMTPSA id t17sm8090977qto.92.2021.05.23.07.54.47 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 May 2021 07:54:48 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Sun, 23 May 2021 11:54:33 -0300 Message-Id: <20210523145433.5426-3-jamrial@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210523145433.5426-1-jamrial@gmail.com> References: <20210523145433.5426-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/3] avutil/mem: check for max_alloc_size in av_fast_malloc() X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: EFCXArcbZgdV This puts av_fast_malloc*() in line with av_fast_realloc(). Signed-off-by: James Almer --- libavutil/mem.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/libavutil/mem.c b/libavutil/mem.c index 471b49f8e7..1b0e39eb89 100644 --- a/libavutil/mem.c +++ b/libavutil/mem.c @@ -513,6 +513,7 @@ void *av_fast_realloc(void *ptr, unsigned int *size, size_t min_size) static inline void fast_malloc(void *ptr, unsigned int *size, size_t min_size, int zero_realloc) { + size_t max_size; void *val; memcpy(&val, ptr, sizeof(val)); @@ -520,7 +521,15 @@ static inline void fast_malloc(void *ptr, unsigned int *size, size_t min_size, i av_assert0(val || !min_size); return; } - min_size = FFMAX(min_size + min_size / 16 + 32, min_size); + + max_size = atomic_load_explicit(&max_alloc_size, memory_order_relaxed); + + if (min_size > max_size) { + av_freep(ptr); + *size = 0; + return; + } + min_size = FFMIN(max_size, FFMAX(min_size + min_size / 16 + 32, min_size)); av_freep(ptr); val = zero_realloc ? av_mallocz(min_size) : av_malloc(min_size); memcpy(ptr, &val, sizeof(val));