Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753438AbcKEG7N (ORCPT ); Sat, 5 Nov 2016 02:59:13 -0400 Received: from ex13-edg-ou-002.vmware.com ([208.91.0.190]:43243 "EHLO EX13-EDG-OU-002.vmware.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752356AbcKEG7M (ORCPT ); Sat, 5 Nov 2016 02:59:12 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=thellstrom@vmware.com; Subject: Re: [PATCH] drm: move allocation out of drm_get_format_name() To: Eric Engestrom , References: <20161105012344.GA28349@engestrom.ch> <20161105013325.3889-1-eric@engestrom.ch> CC: =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= , "Alex Deucher" , =?UTF-8?Q?Christian_K=c3=b6nig?= , David Airlie , Xinliang Liu , Daniel Vetter , "Jani Nikula" , VMware Graphics , Sinclair Yeh , "Tom St Denis" , =?UTF-8?Q?Michel_D=c3=a4nzer?= , Gustavo Padovan , Emily Deng , Chunming Zhou , "Flora Cui" , Vitaly Prosyak , Ken Wang , Colin Ian King , "Alexandre Demers" , Junwei Zhang , Xinwei Kong , Chris Wilson , Laurent Pinchart , Wei Yongjun , , From: Thomas Hellstrom Message-ID: <2de17266-3532-7b13-5b35-d4cf3eaa4144@vmware.com> Date: Sat, 5 Nov 2016 13:56:55 +0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.0 MIME-Version: 1.0 In-Reply-To: <20161105013325.3889-1-eric@engestrom.ch> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit X-Originating-IP: [122.154.45.185] X-ClientProxiedBy: KL1PR02CA0044.apcprd02.prod.outlook.com (10.167.54.12) To CY1PR05MB2330.namprd05.prod.outlook.com (10.166.192.152) X-MS-Office365-Filtering-Correlation-Id: 52f81214-7692-452e-8281-08d40549036e X-Microsoft-Exchange-Diagnostics: 1;CY1PR05MB2330;2:KwmSwTU6cFPCxzdg8VcOy9Th/AsvV3B29LDg6iHoln5atO8KtAkjwi0v4iseFJshHoFnlQQRTbLgqmUwijuNW2nxm53ScOWo0lUiXqEk32jg1pqweuEx8/SGDoE8ReDuTkOp9DNSghtUS5bpMKubHCDR9RLLP9Nz7mh0f6/u0PHUAnJizg7Su0gKHDaWqDM3LK2Xx/QbNWnFn5LOI+yLhA==;3:XWpOJQCSuUp0dpG9kGLX4epO+C/rgeJNAoPmItoS1aM/QQgowgjpQe0TnnW71Fs5PjJO/ZApk+tJ/+chcTsH27+vqKKy+63C2sWxAvuvH9oFa3qxMzeNLTZd8zq/ufm4uZx05qG8m9jTbFpcTPBpIw== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR05MB2330; X-Microsoft-Exchange-Diagnostics: 1;CY1PR05MB2330;25:RYFhfva341U28Kj6lHuJAwayYjrrz/PLcwO/mqw7ZBzK55a+Fz9aqy7nlqRe7TWaVkwP3Cglh2wngty76Mqu09qruCYjd92LDo8R6T66RT6sXdgbO9ieDxV1TFfKZyQ9f6WhyHafvAuDoURF+XLfxnT6sPA+M2lUkpD2txXQvrr3N6dduTf9ZXvGbSxn4h3rQlAHY2Mhz2yeyNgzY+bVoF7I1EC/VnaDkngFgT7kKc+Gg1KwFwOxLEwd3ZOM+K7cc3t2+rynAAA1Jw6atm7eG76Q4TMk2owyQxVo6yaRHc76grtH/d+DItGt6bux0U/bj+WdIopxy8GcU1/tSGcV2jdJ3dc07u70FKf5sgacdeMelyq2HZHozD2vzCgNKaw024n+hSVoXloMGFY1WnU8Zf61VMUYNR7HXpHwK0gL4N9On2jbBMaa8novhPnJ58Qj7W7tJxQSLCK51zAKWiF7+TCGtqdrXUw72qPE8QZtOtV8oHDhNdvqHv96b47p4Bs5eD7gZrQ2Ww54GfxGHfZMI/kzVkNML7tdz3hwMfUYHy0jzZQaPn9MBIAElwNDLuf0R2irsgaTntMaEj9FGV+Ykckvr7RdilCREl4iu8o7/1y0oClaodWzB6OJCfqXewU5uBTWGyfgriC6sG8S0pmeeOM/DrEyZA9JEngP09o76TwUgUJfJ202bh3G1YO84PuhgT/8Zam7xfa4+/1sV154oqNzh1Q8bXRPTgS7Qx7GADs= X-LD-Processed: b39138ca-3cee-4b4a-a4d6-cd83d9dd62f0,ExtAddr X-Microsoft-Exchange-Diagnostics: 1;CY1PR05MB2330;31:in7dhHsT5VuaxndyTm/kuWmU0CiVmF6TLdbBDiE5/SpBDUAGwrwuyz9guPhBrO3+6c4J2dTL9PAPt7eexzyyAXkBoGUrzWHuQnFFHqVE5TFtXjVNrD5zdTcYVMSRSnMUYqmOV8CsBwjI+nGLElPTlqZ0vP0JM1Pz2sSfQB00/Shu80VxGdlM+kCFDswO2i+dKTTXpwNMfpgHuF00T0ueup63MeJ+AhJ+tGKNyAlB2qrDVUGTYudVD2Gr6Z6YXbPW;20:WEfEMYX75E+drnXMFRpE/qCWHxw3HwGONSNCjpSYHQVlmdudx1ZAwx+CYdFIfCXT1JyK4bvXB/o7jO7++FHNv9lLfIgJ1Ao+tb7sd75YuCHA4/Fljo3f3oCWYtgMKSSWwlhmabvAHIWVnFQiaSKmEvQZBs6P2oBgg3Y4x+45TB829ysvl0T3qfQ5y+YMik/FDwonLg2w6RbX7n0FUceYazVsKCgUIb2OAm4VhBuOXx0EDqPv3mVRKcNlRcMy4ImVBanQIKMCEnwRHtvgQZ6Jg2Hcr+eMZ2x/lTQiO75fQpCxNXRuvHd6TaildD+I2Fd4N3gBrwKxik/ZnjGv8oKAN1Yb4TXW0+mITjVfuSzPWxM1fGZPIlEwGFQcRt3kCv+jlX+WXkoCcNnPnuUo6ppj8fmfe6LPYpzXuiw7PFioa9sfUX1hhiQAfAL/r4E9RIYROfICdcN+RZpeJYWneJ9DiKu3uXzX1fyzzIoHr+yHN+1mYjBc1snZ9zqLupbCOwd1 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(61668805478150)(228905959029699); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001);SRVR:CY1PR05MB2330;BCL:0;PCL:0;RULEID:;SRVR:CY1PR05MB2330; X-Microsoft-Exchange-Diagnostics: 1;CY1PR05MB2330;4:pSttgQvGClbTO6s+vq9cirQrxCO/HBivklcZUM/vWWpUnbugZnLooUg0tiVRQvqP2RWvwS4hzu9qwdVn2htiu+n7IZVhRhW6m42f3EvG/NaLIlau+cBJuaAXR0VPMIhoBIizssSF/r2vSFQZHOm1TaS3RkgDKlAIX24Me2YG6UamqTrHxK4feqVY4Fk8h1zdiy17c/xPiZiY3IbtglcqOjuw4RTg1ycyB0Es6T5eEImQGTpa0g22l1lsR9OE0Ch2ZrykkgP+QDLKdTUj7wZKhr4JkSz7MnSCM93x5Nathx8ND0hGToT9HxL13DUiqeaXMgLTt1fAof8Uz6nPt8Z7iaKwty9CJ5x3DF9MFzyvDVUiAwlwY7Ch/6VMs971oT21vJ0khJryslzSyz/eqFvVYjFtzrmWTfhbTAHNtkD1pGzKPIbJekJHGjBTsXFcvMXkeqBEmsGyQGSkUHwqzGz72U6Aubvfln+fxZCpDIti/ww= X-Forefront-PRVS: 011787B9DD X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(7916002)(377454003)(189002)(199003)(24454002)(65806001)(47776003)(4001350100001)(189998001)(5001770100001)(65956001)(50466002)(2950100002)(105586002)(97736004)(106356001)(92566002)(7416002)(5660300001)(36756003)(23676002)(68736007)(77096005)(101416001)(76176999)(54356999)(65826007)(50986999)(4326007)(66066001)(6666003)(31686004)(6116002)(3846002)(42186005)(83506001)(2906002)(7736002)(305945005)(86362001)(7846002)(64126003)(8666005)(81156014)(8676002)(81166006)(575784001)(33646002)(586003)(19580405001)(31696002)(19580395003)(2870700001)(7059030);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR05MB2330;H:linlap1.localdomain;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtDWTFQUjA1TUIyMzMwOzIzOmZObStIcEVDdWV6SHR6V2xIVTBmN0VZZnJa?= =?utf-8?B?dlpDTU5XZFRYVXpmN0JSWjN6ZlpKUEI0OGZORmJjNEVsa2dKNHIvWFZpNmR4?= =?utf-8?B?d0dOdHI3dGhheU5nbE92eUR3cXZ5amsvMEJPaUlUdlE0SWVKVXJBSXpDY291?= =?utf-8?B?b096U05Ka2xwTTErUE9xemxxVndUQVQ0bUgzbUw5V0IwZWFRclBFNmhXU2R2?= =?utf-8?B?Z0IwUVJsR24wS1RGR2twRkJDNVY4SldCM0xvbkllNmJwcUl4alh1VW84Q3B2?= =?utf-8?B?YjNCbVByNGpqSjJzaWNoZkRRL1JmZUJPN25LV2ZUK0tCY1JkVmtrSC9RZ3pM?= =?utf-8?B?NERDeXM1VnBhUXRHRWJudnhRUWR0TklDWXNRNEV4Wk4zRVhGcUhjLzUvcmhw?= =?utf-8?B?SUZQbWJBanFPOVdNMFVDbElSMFhEd0RVU0owV2tQNFpESjgzbDVHaEdtNnVN?= =?utf-8?B?VWpHcHZUVmdOdVBUZVJJZ1duTllEZEZkVU53d2dsK2VyakpiekY1K09MSldq?= =?utf-8?B?QlVCMHpqNnNxZHk0VHdjNTRhZUJ1cklhKzlLa3NaeTUvVERFbCsyNWcxZWdu?= =?utf-8?B?SE9CTms1K1gvTXJ4UW81dXU1RkNzc2RLUnpjS1o4eWJhRTBqNVZyOEhlQlhh?= =?utf-8?B?eERKdi8yM1dseU5FNHlEWXdDVXlaT0pQb21wQWpQOWsvZE92dy9JcG9aM05O?= =?utf-8?B?V3R4bTczQWNtWWpIb3dXWDNXMGVpWEljN0VhaWlaWGFNLzFtNkVPNjVoS25u?= =?utf-8?B?MThyUFh3WGxxd21aS3cxUUZUcEhHWTd6ZGpuRTJkZ3ZoeDg0R0hnQWdEZ3lN?= =?utf-8?B?UEtNUDZpSVFRREZKL1lRcjZCNzVqVXVIaVJ1NVFzYjBRUHl2aEpEL1MrTWdO?= =?utf-8?B?VFFjQ3JleEJyekhWN0o4ZzdLL0dXaHY5Sy9tWCtjOXNOaGpQZ3dBTmJ2RHpO?= =?utf-8?B?QlRQZEQ5eTZBdE16MkZZMzVVRi8vcERmVW1FOEZrLzN6TU40dlhHa1NYcC9H?= =?utf-8?B?V05qM0I5VUl3OWh3TUYweVRXQ2NZQ1BTb1R1N0dIZW9JOFNJdjh5WDRBUlNX?= =?utf-8?B?TzVQeGpxOUFTMys1R2UvWnpMZU1YanVXRkxNNTdjUTZsVXJlNWsxbDdRMXd5?= =?utf-8?B?K1ZxSXFWOWdnSzZTaXVqZk9wM0g3c2xFaFk2b2lyOXBOSHR1OUNMNDVXV0Ft?= =?utf-8?B?bm5DVVdxOEM0YUFFL1c2U2lrUlhkY05JSkNHaGppck9yVWVoN1BydkVaemN6?= =?utf-8?B?ZnRSb3l1ZGJxNGpOYnBCUmhrYmFiK1d6Vnl0N1NqUmJzbWFmQTIrNDZrWHU2?= =?utf-8?B?ZEZNZkJzMnNWei90T1J5T2VlYW5hNldjYVQ4UjBKcFU5V3FoRWYwUlUvT2dn?= =?utf-8?B?VFpLa25PZkFSSVF2bjc1TjA1cm9CYUw3ckVGeENrUlZ1T2JzdVFrOVB2d1Iy?= =?utf-8?B?QS9oc1hwZmNjbnJxdTRxTWIrdEpZL2hmdVhXSkxiVFBlK2YyaG9aSk5TcjJB?= =?utf-8?B?S1VVS3EzNjd3dzlKdW5uNHdqREYxa0ZaUG5ZQlo5L2NIYlhSMEVDa2FBcURV?= =?utf-8?B?b21Ybzg2TzBzMk5RVS82RkF0NmdzWGdneTVhaVpiVEQ2UzdkOWJJYUtrWDZw?= =?utf-8?B?d0dsVHdYdStHUVdTR0ovNzM2aU1mRGVZUExPNDN5TzM1UndrcjViY3U3alQ5?= =?utf-8?B?RWtOYzhCWHpnTTRuK0Q4cGhnandFdjlrTWlBTWJ3ZmRmKzlnMEdHREt0MFIw?= =?utf-8?B?RkZQUTlGcVZLL3MzZ1R1N0NYMUJ1MzlqK3V3akE4dDd2NVpoUXBTb1NPcUJW?= =?utf-8?B?WjVGNDd6ZXA0RjZHbWowa2Q2K2dyaURmQWxMdmYza2JmYUE9PQ==?= X-Microsoft-Exchange-Diagnostics: 1;CY1PR05MB2330;6:MQNqvY2pD+UapvGzM65xoLTiGzcxcIyinRkZKe50MEKiplztlkMZuhzLiOqiOJmHsUuHF3yWIxwei4EMIboTUErWndGzYdfgoC/idcYYBwQRXmFIDKVrxrBIknTLG/JAsilPD8mZabRjgUGICDBGLLJP8+NgojlsbG5V3QIrsLCOj9gcgPw/V8r5HPWutiecygoBX5+XRgJ9OFkj6FBPhSW+l2cpAPlL8DzlbsC4HeclZ2OnS92waELJIcKiffLCoHculmPhGxFXfoj8PSxtiQRZgZzHI2AYwqAMdvPEVvnWFtwMx5A+c09LzsL1elrV;5:RxsXWnZClKTZX3hlrJHz4X5TTrHHPc0EOvjFg0e0QHVVdx+yubOqrKjNDPkJ63wvU0x2qItVahMm3L7LBqqQsiVCDZq25T8HZCOM4Bq85CCAx7LsAE5NNkQ29PBKoT+xvcTf/0VxtZAppgKPL0frDHW0RMLBntv/eMtWk1K3BCU=;24:fEbFhpjEaFonmIKMEfHmGvGgbd6Y6fSzH0SkFboIndLpHxSkdtLMd6O0XDAqrYUbVbG+IQQFfEFpyicLjPMF3GPeiBmYDGB7rs2wUCElHGA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CY1PR05MB2330;7:jcRQ49qGtX097qbdKl9m2Ae0b0tfBmNMZ46XiaqLvVbOl3dCNT0Weh4An8++1hrFvZ4wYhL9HlHmYoB9PMA0SyUr6b7VjFQOXyHqutcQmAh6PGdXjF9ZgEX2xRooZMrd0piWXvUVRaww/OW0O3rqxySkBiJUueLqqnuZTcS/MmU3EW+Vwanlqiaeg+YGguJQqtcgmb9pnb8fQMXynWB1Mx/oxbuU4foPiKRTI1VHoRj4QIGLCVpy9YCYy04C1wsEZXY5QOQ2dRDA/IZYZvA/5cmunQ/zR2au4cEHsTI39YsdlI616kqC8YStrXuy6Sz9lkeXQPvXq4qyl1JK/LC5lIp7octDSeef8pdoY83XhR0=;20:U8tkjqca7YQk1CzEUQHcfImZj1LYfibUN1V195++8CRIK2hKFO8Jy2c3Akj6MowlL7TeI+FxLoF+sS5De+JMMacTS93mm8oeiO7FHyLREIdM5MoNUKG4cPMDyDgJ8rNrmo2mJrTR5SkEFjp/4N37KTs4XR91nAQYd3g/72F/gbY= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2016 06:57:19.2299 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR05MB2330 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 21499 Lines: 522 For the vmwgfx part: Acked-by: Thomas Hellstrom On 11/05/2016 08:33 AM, Eric Engestrom wrote: > Fixes: 90844f00049e9f42573fd31d7c32e8fd31d3fd07 > > drm: make drm_get_format_name thread-safe > > Signed-off-by: Eric Engestrom > [danvet: Clarify that the returned pointer must be freed with > kfree().] > Signed-off-by: Daniel Vetter > > Suggested-by: Ville Syrjälä > Signed-off-by: Eric Engestrom > --- > drivers/gpu/drm/amd/amdgpu/dce_v10_0.c | 7 ++--- > drivers/gpu/drm/amd/amdgpu/dce_v11_0.c | 7 ++--- > drivers/gpu/drm/amd/amdgpu/dce_v6_0.c | 3 +- > drivers/gpu/drm/amd/amdgpu/dce_v8_0.c | 7 ++--- > drivers/gpu/drm/drm_atomic.c | 7 +++-- > drivers/gpu/drm/drm_crtc.c | 7 +++-- > drivers/gpu/drm/drm_fourcc.c | 12 +++----- > drivers/gpu/drm/drm_framebuffer.c | 7 +++-- > drivers/gpu/drm/drm_modeset_helper.c | 7 +++-- > drivers/gpu/drm/drm_plane.c | 7 +++-- > drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 7 ++--- > drivers/gpu/drm/i915/i915_debugfs.c | 8 ++--- > drivers/gpu/drm/i915/intel_atomic_plane.c | 8 ++--- > drivers/gpu/drm/i915/intel_display.c | 41 ++++++++++--------------- > drivers/gpu/drm/radeon/atombios_crtc.c | 14 ++++----- > drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 3 +- > include/drm/drm_fourcc.h | 3 +- > 17 files changed, 71 insertions(+), 84 deletions(-) > > diff --git a/include/drm/drm_fourcc.h b/include/drm/drm_fourcc.h > index dc0aafa..5a8cb4b 100644 > --- a/include/drm/drm_fourcc.h > +++ b/include/drm/drm_fourcc.h > @@ -54,6 +54,7 @@ int drm_format_horz_chroma_subsampling(uint32_t format); > int drm_format_vert_chroma_subsampling(uint32_t format); > int drm_format_plane_width(int width, uint32_t format, int plane); > int drm_format_plane_height(int height, uint32_t format, int plane); > -char *drm_get_format_name(uint32_t format) __malloc; > +typedef char drm_format_name_buf[32]; > +char *drm_get_format_name(uint32_t format, drm_format_name_buf buf); > > #endif /* __DRM_FOURCC_H__ */ > diff --git a/drivers/gpu/drm/drm_fourcc.c b/drivers/gpu/drm/drm_fourcc.c > index cbb8b77..34ed520 100644 > --- a/drivers/gpu/drm/drm_fourcc.c > +++ b/drivers/gpu/drm/drm_fourcc.c > @@ -79,17 +79,13 @@ uint32_t drm_mode_legacy_fb_format(uint32_t bpp, uint32_t depth) > EXPORT_SYMBOL(drm_mode_legacy_fb_format); > > /** > - * drm_get_format_name - return a string for drm fourcc format > + * drm_get_format_name - fill a string with a drm fourcc format's name > * @format: format to compute name of > + * @buf: caller-supplied buffer > - * > - * Note that the buffer returned by this function is owned by the caller > - * and will need to be freed using kfree(). > */ > -char *drm_get_format_name(uint32_t format) > +char *drm_get_format_name(uint32_t format, drm_format_name_buf buf) > { > - char *buf = kmalloc(32, GFP_KERNEL); > - > - snprintf(buf, 32, > + snprintf(buf, sizeof(drm_format_name_buf), > "%c%c%c%c %s-endian (0x%08x)", > printable_char(format & 0xff), > printable_char((format >> 8) & 0xff), > diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c > index 199d3f7..cefa3d8 100644 > --- a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c > @@ -2032,7 +2032,7 @@ static int dce_v10_0_crtc_do_set_base(struct drm_crtc *crtc, > u32 tmp, viewport_w, viewport_h; > int r; > bool bypass_lut = false; > - char *format_name; > + drm_format_name_buf format_name; > > /* no fb bound */ > if (!atomic && !crtc->primary->fb) { > @@ -2144,9 +2144,8 @@ static int dce_v10_0_crtc_do_set_base(struct drm_crtc *crtc, > bypass_lut = true; > break; > default: > - format_name = drm_get_format_name(target_fb->pixel_format); > - DRM_ERROR("Unsupported screen format %s\n", format_name); > - kfree(format_name); > + DRM_ERROR("Unsupported screen format %s\n", > + drm_get_format_name(target_fb->pixel_format, format_name)); > return -EINVAL; > } > > diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c > index ecd000e..462abb8 100644 > --- a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c > @@ -2013,7 +2013,7 @@ static int dce_v11_0_crtc_do_set_base(struct drm_crtc *crtc, > u32 tmp, viewport_w, viewport_h; > int r; > bool bypass_lut = false; > - char *format_name; > + drm_format_name_buf format_name; > > /* no fb bound */ > if (!atomic && !crtc->primary->fb) { > @@ -2125,9 +2125,8 @@ static int dce_v11_0_crtc_do_set_base(struct drm_crtc *crtc, > bypass_lut = true; > break; > default: > - format_name = drm_get_format_name(target_fb->pixel_format); > - DRM_ERROR("Unsupported screen format %s\n", format_name); > - kfree(format_name); > + DRM_ERROR("Unsupported screen format %s\n", > + drm_get_format_name(target_fb->pixel_format, format_name)); > return -EINVAL; > } > > diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c > index 44547f9..3b8cea3 100644 > --- a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c > @@ -1456,6 +1456,7 @@ static int dce_v6_0_crtc_do_set_base(struct drm_crtc *crtc, > u32 viewport_w, viewport_h; > int r; > bool bypass_lut = false; > + drm_format_name_buf format_name; > > /* no fb bound */ > if (!atomic && !crtc->primary->fb) { > @@ -1559,7 +1560,7 @@ static int dce_v6_0_crtc_do_set_base(struct drm_crtc *crtc, > break; > default: > DRM_ERROR("Unsupported screen format %s\n", > - drm_get_format_name(target_fb->pixel_format)); > + drm_get_format_name(target_fb->pixel_format, format_name)); > return -EINVAL; > } > > diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c > index 979aedf..8c624b5 100644 > --- a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c > @@ -1910,7 +1910,7 @@ static int dce_v8_0_crtc_do_set_base(struct drm_crtc *crtc, > u32 viewport_w, viewport_h; > int r; > bool bypass_lut = false; > - char *format_name; > + drm_format_name_buf format_name; > > /* no fb bound */ > if (!atomic && !crtc->primary->fb) { > @@ -2015,9 +2015,8 @@ static int dce_v8_0_crtc_do_set_base(struct drm_crtc *crtc, > bypass_lut = true; > break; > default: > - format_name = drm_get_format_name(target_fb->pixel_format); > - DRM_ERROR("Unsupported screen format %s\n", format_name); > - kfree(format_name); > + DRM_ERROR("Unsupported screen format %s\n", > + drm_get_format_name(target_fb->pixel_format, format_name)); > return -EINVAL; > } > > diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c > index c32fb3c..8d2e6a5 100644 > --- a/drivers/gpu/drm/drm_atomic.c > +++ b/drivers/gpu/drm/drm_atomic.c > @@ -835,9 +835,10 @@ static int drm_atomic_plane_check(struct drm_plane *plane, > /* Check whether this plane supports the fb pixel format. */ > ret = drm_plane_check_pixel_format(plane, state->fb->pixel_format); > if (ret) { > - char *format_name = drm_get_format_name(state->fb->pixel_format); > - DRM_DEBUG_ATOMIC("Invalid pixel format %s\n", format_name); > - kfree(format_name); > + drm_format_name_buf format_name; > + DRM_DEBUG_ATOMIC("Invalid pixel format %s\n", > + drm_get_format_name(state->fb->pixel_format, > + format_name)); > return ret; > } > > diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c > index 13441e2..7f5bbe3 100644 > --- a/drivers/gpu/drm/drm_crtc.c > +++ b/drivers/gpu/drm/drm_crtc.c > @@ -827,9 +827,10 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data, > ret = drm_plane_check_pixel_format(crtc->primary, > fb->pixel_format); > if (ret) { > - char *format_name = drm_get_format_name(fb->pixel_format); > - DRM_DEBUG_KMS("Invalid pixel format %s\n", format_name); > - kfree(format_name); > + drm_format_name_buf format_name; > + DRM_DEBUG_KMS("Invalid pixel format %s\n", > + drm_get_format_name(fb->pixel_format, > + format_name)); > goto out; > } > } > diff --git a/drivers/gpu/drm/drm_framebuffer.c b/drivers/gpu/drm/drm_framebuffer.c > index 49fd7db..12ad188 100644 > --- a/drivers/gpu/drm/drm_framebuffer.c > +++ b/drivers/gpu/drm/drm_framebuffer.c > @@ -133,9 +133,10 @@ static int framebuffer_check(const struct drm_mode_fb_cmd2 *r) > > info = __drm_format_info(r->pixel_format & ~DRM_FORMAT_BIG_ENDIAN); > if (!info) { > - char *format_name = drm_get_format_name(r->pixel_format); > - DRM_DEBUG_KMS("bad framebuffer format %s\n", format_name); > - kfree(format_name); > + drm_format_name_buf format_name; > + DRM_DEBUG_KMS("bad framebuffer format %s\n", > + drm_get_format_name(r->pixel_format, > + format_name)); > return -EINVAL; > } > > diff --git a/drivers/gpu/drm/drm_modeset_helper.c b/drivers/gpu/drm/drm_modeset_helper.c > index 2544dfe..b6ab72a 100644 > --- a/drivers/gpu/drm/drm_modeset_helper.c > +++ b/drivers/gpu/drm/drm_modeset_helper.c > @@ -75,10 +75,11 @@ void drm_helper_mode_fill_fb_struct(struct drm_framebuffer *fb, > > info = drm_format_info(mode_cmd->pixel_format); > if (!info || !info->depth) { > - char *format_name = drm_get_format_name(mode_cmd->pixel_format); > + drm_format_name_buf format_name; > > - DRM_DEBUG_KMS("non-RGB pixel format %s\n", format_name); > - kfree(format_name); > + DRM_DEBUG_KMS("non-RGB pixel format %s\n", > + drm_get_format_name(mode_cmd->pixel_format, > + format_name)); > > fb->depth = 0; > fb->bits_per_pixel = 0; > diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c > index 249c0ae..9a45c52 100644 > --- a/drivers/gpu/drm/drm_plane.c > +++ b/drivers/gpu/drm/drm_plane.c > @@ -479,9 +479,10 @@ static int __setplane_internal(struct drm_plane *plane, > /* Check whether this plane supports the fb pixel format. */ > ret = drm_plane_check_pixel_format(plane, fb->pixel_format); > if (ret) { > - char *format_name = drm_get_format_name(fb->pixel_format); > - DRM_DEBUG_KMS("Invalid pixel format %s\n", format_name); > - kfree(format_name); > + drm_format_name_buf format_name; > + DRM_DEBUG_KMS("Invalid pixel format %s\n", > + drm_get_format_name(fb->pixel_format, > + format_name)); > goto out; > } > > diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c > index 7e7a4d4..c5c0b38 100644 > --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c > +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c > @@ -608,17 +608,16 @@ static void ade_rdma_set(void __iomem *base, struct drm_framebuffer *fb, > u32 ch, u32 y, u32 in_h, u32 fmt) > { > struct drm_gem_cma_object *obj = drm_fb_cma_get_gem_obj(fb, 0); > - char *format_name; > + drm_format_name_buf format_name; > u32 reg_ctrl, reg_addr, reg_size, reg_stride, reg_space, reg_en; > u32 stride = fb->pitches[0]; > u32 addr = (u32)obj->paddr + y * stride; > > DRM_DEBUG_DRIVER("rdma%d: (y=%d, height=%d), stride=%d, paddr=0x%x\n", > ch + 1, y, in_h, stride, (u32)obj->paddr); > - format_name = drm_get_format_name(fb->pixel_format); > DRM_DEBUG_DRIVER("addr=0x%x, fb:%dx%d, pixel_format=%d(%s)\n", > - addr, fb->width, fb->height, fmt, format_name); > + addr, fb->width, fb->height, fmt, > + drm_get_format_name(fb->pixel_format, format_name)); > - kfree(format_name); > > /* get reg offset */ > reg_ctrl = RD_CH_CTRL(ch); > diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c > index 20638d2..39f76b1 100644 > --- a/drivers/gpu/drm/i915/i915_debugfs.c > +++ b/drivers/gpu/drm/i915/i915_debugfs.c > @@ -2971,7 +2971,7 @@ static void intel_plane_info(struct seq_file *m, struct intel_crtc *intel_crtc) > for_each_intel_plane_on_crtc(dev, intel_crtc, intel_plane) { > struct drm_plane_state *state; > struct drm_plane *plane = &intel_plane->base; > - char *format_name; > + drm_format_name_buf format_name; > > if (!plane->state) { > seq_puts(m, "plane->state is NULL!\n"); > @@ -2981,9 +2981,9 @@ static void intel_plane_info(struct seq_file *m, struct intel_crtc *intel_crtc) > state = plane->state; > > if (state->fb) { > - format_name = drm_get_format_name(state->fb->pixel_format); > + drm_get_format_name(state->fb->pixel_format, format_name); > } else { > - format_name = kstrdup("N/A", GFP_KERNEL); > + sprintf(format_name, "N/A"); > } > > seq_printf(m, "\t--Plane id %d: type=%s, crtc_pos=%4dx%4d, crtc_size=%4dx%4d, src_pos=%d.%04ux%d.%04u, src_size=%d.%04ux%d.%04u, format=%s, rotation=%s\n", > @@ -3001,8 +3001,6 @@ static void intel_plane_info(struct seq_file *m, struct intel_crtc *intel_crtc) > ((state->src_h & 0xffff) * 15625) >> 10, > format_name, > plane_rotation(state->rotation)); > - > - kfree(format_name); > } > } > > diff --git a/drivers/gpu/drm/i915/intel_atomic_plane.c b/drivers/gpu/drm/i915/intel_atomic_plane.c > index c762ae5..289ebc9 100644 > --- a/drivers/gpu/drm/i915/intel_atomic_plane.c > +++ b/drivers/gpu/drm/i915/intel_atomic_plane.c > @@ -143,7 +143,7 @@ static int intel_plane_atomic_check(struct drm_plane *plane, > crtc_state->base.enable ? crtc_state->pipe_src_h : 0; > > if (state->fb && drm_rotation_90_or_270(state->rotation)) { > - char *format_name; > + drm_format_name_buf format_name; > > if (!(state->fb->modifier[0] == I915_FORMAT_MOD_Y_TILED || > state->fb->modifier[0] == I915_FORMAT_MOD_Yf_TILED)) { > @@ -159,9 +159,9 @@ static int intel_plane_atomic_check(struct drm_plane *plane, > switch (state->fb->pixel_format) { > case DRM_FORMAT_C8: > case DRM_FORMAT_RGB565: > - format_name = drm_get_format_name(state->fb->pixel_format); > - DRM_DEBUG_KMS("Unsupported pixel format %s for 90/270!\n", format_name); > - kfree(format_name); > + DRM_DEBUG_KMS("Unsupported pixel format %s for 90/270!\n", > + drm_get_format_name(state->fb->pixel_format, > + format_name)); > return -EINVAL; > > default: > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > index 6f8f6ec..ab0882f 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -12871,7 +12871,7 @@ static void intel_dump_pipe_config(struct intel_crtc *crtc, > > DRM_DEBUG_KMS("planes on this crtc\n"); > list_for_each_entry(plane, &dev->mode_config.plane_list, head) { > - char *format_name; > + drm_format_name_buf format_name; > intel_plane = to_intel_plane(plane); > if (intel_plane->pipe != crtc->pipe) > continue; > @@ -12884,12 +12884,11 @@ static void intel_dump_pipe_config(struct intel_crtc *crtc, > continue; > } > > - format_name = drm_get_format_name(fb->pixel_format); > - > DRM_DEBUG_KMS("[PLANE:%d:%s] enabled", > plane->base.id, plane->name); > DRM_DEBUG_KMS("\tFB:%d, fb = %ux%u format = %s", > - fb->base.id, fb->width, fb->height, format_name); > + fb->base.id, fb->width, fb->height, > + drm_get_format_name(fb->pixel_format, format_name)); > DRM_DEBUG_KMS("\tscaler:%d src %dx%d+%d+%d dst %dx%d+%d+%d\n", > state->scaler_id, > state->base.src.x1 >> 16, > @@ -12899,8 +12898,6 @@ static void intel_dump_pipe_config(struct intel_crtc *crtc, > state->base.dst.x1, state->base.dst.y1, > drm_rect_width(&state->base.dst), > drm_rect_height(&state->base.dst)); > - > - kfree(format_name); > } > } > > @@ -15749,7 +15746,7 @@ static int intel_framebuffer_init(struct drm_device *dev, > unsigned int tiling = i915_gem_object_get_tiling(obj); > int ret; > u32 pitch_limit, stride_alignment; > - char *format_name; > + drm_format_name_buf format_name; > > WARN_ON(!mutex_is_locked(&dev->struct_mutex)); > > @@ -15840,18 +15837,16 @@ static int intel_framebuffer_init(struct drm_device *dev, > break; > case DRM_FORMAT_XRGB1555: > if (INTEL_INFO(dev)->gen > 3) { > - format_name = drm_get_format_name(mode_cmd->pixel_format); > - DRM_DEBUG("unsupported pixel format: %s\n", format_name); > - kfree(format_name); > + DRM_DEBUG("unsupported pixel format: %s\n", > + drm_get_format_name(mode_cmd->pixel_format, format_name)); > return -EINVAL; > } > break; > case DRM_FORMAT_ABGR8888: > if (!IS_VALLEYVIEW(dev_priv) && !IS_CHERRYVIEW(dev_priv) && > INTEL_INFO(dev)->gen < 9) { > - format_name = drm_get_format_name(mode_cmd->pixel_format); > - DRM_DEBUG("unsupported pixel format: %s\n", format_name); > - kfree(format_name); > + DRM_DEBUG("unsupported pixel format: %s\n", > + drm_get_format_name(mode_cmd->pixel_format, format_name)); > return -EINVAL; > } > break; > @@ -15859,17 +15854,15 @@ static int intel_framebuffer_init(struct drm_device *dev, > case DRM_FORMAT_XRGB2101010: > case DRM_FORMAT_XBGR2101010: > if (INTEL_INFO(dev)->gen < 4) { > - format_name = drm_get_format_name(mode_cmd->pixel_format); > - DRM_DEBUG("unsupported pixel format: %s\n", format_name); > - kfree(format_name); > + DRM_DEBUG("unsupported pixel format: %s\n", > + drm_get_format_name(mode_cmd->pixel_format, format_name)); > return -EINVAL; > } > break; > case DRM_FORMAT_ABGR2101010: > if (!IS_VALLEYVIEW(dev_priv) && !IS_CHERRYVIEW(dev_priv)) { > - format_name = drm_get_format_name(mode_cmd->pixel_format); > - DRM_DEBUG("unsupported pixel format: %s\n", format_name); > - kfree(format_name); > + DRM_DEBUG("unsupported pixel format: %s\n", > + drm_get_format_name(mode_cmd->pixel_format, format_name)); > return -EINVAL; > } > break; > @@ -15878,16 +15871,14 @@ static int intel_framebuffer_init(struct drm_device *dev, > case DRM_FORMAT_YVYU: > case DRM_FORMAT_VYUY: > if (INTEL_INFO(dev)->gen < 5) { > - format_name = drm_get_format_name(mode_cmd->pixel_format); > - DRM_DEBUG("unsupported pixel format: %s\n", format_name); > - kfree(format_name); > + DRM_DEBUG("unsupported pixel format: %s\n", > + drm_get_format_name(mode_cmd->pixel_format, format_name)); > return -EINVAL; > } > break; > default: > - format_name = drm_get_format_name(mode_cmd->pixel_format); > - DRM_DEBUG("unsupported pixel format: %s\n", format_name); > - kfree(format_name); > + DRM_DEBUG("unsupported pixel format: %s\n", > + drm_get_format_name(mode_cmd->pixel_format, format_name)); > return -EINVAL; > } > > diff --git a/drivers/gpu/drm/radeon/atombios_crtc.c b/drivers/gpu/drm/radeon/atombios_crtc.c > index 74f99ba..adff13b 100644 > --- a/drivers/gpu/drm/radeon/atombios_crtc.c > +++ b/drivers/gpu/drm/radeon/atombios_crtc.c > @@ -1156,7 +1156,7 @@ static int dce4_crtc_do_set_base(struct drm_crtc *crtc, > u32 tmp, viewport_w, viewport_h; > int r; > bool bypass_lut = false; > - char *format_name; > + drm_format_name_buf format_name; > > /* no fb bound */ > if (!atomic && !crtc->primary->fb) { > @@ -1260,9 +1260,8 @@ static int dce4_crtc_do_set_base(struct drm_crtc *crtc, > bypass_lut = true; > break; > default: > - format_name = drm_get_format_name(target_fb->pixel_format); > - DRM_ERROR("Unsupported screen format %s\n", format_name); > - kfree(format_name); > + DRM_ERROR("Unsupported screen format %s\n", > + drm_get_format_name(target_fb->pixel_format, format_name)); > return -EINVAL; > } > > @@ -1473,7 +1472,7 @@ static int avivo_crtc_do_set_base(struct drm_crtc *crtc, > u32 viewport_w, viewport_h; > int r; > bool bypass_lut = false; > - char *format_name; > + drm_format_name_buf format_name; > > /* no fb bound */ > if (!atomic && !crtc->primary->fb) { > @@ -1563,9 +1562,8 @@ static int avivo_crtc_do_set_base(struct drm_crtc *crtc, > bypass_lut = true; > break; > default: > - format_name = drm_get_format_name(target_fb->pixel_format); > - DRM_ERROR("Unsupported screen format %s\n", format_name); > - kfree(format_name); > + DRM_ERROR("Unsupported screen format %s\n", > + drm_get_format_name(target_fb->pixel_format, format_name)); > return -EINVAL; > } > > diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c > index c965514..7376307 100644 > --- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c > +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c > @@ -985,8 +985,9 @@ static struct drm_framebuffer *vmw_kms_fb_create(struct drm_device *dev, > > info = drm_format_info(mode_cmd2->pixel_format); > if (!info || !info->depth) { > + drm_format_name_buf format_name; > DRM_ERROR("Unsupported framebuffer format %s\n", > - drm_get_format_name(mode_cmd2->pixel_format)); > + drm_get_format_name(mode_cmd2->pixel_format, format_name)); > return ERR_PTR(-EINVAL); > } >