:::::: 
:::::: Manual check reason: "low confidence static check warning: 
drivers/gpu/drm/drm_gem_framebuffer_helper.c:56:21: warning: Value stored to 
'dev' during its initialization is never read 
[clang-analyzer-deadcode.DeadStores]"
:::::: 

BCC: [email protected]
CC: [email protected]
CC: [email protected]
CC: [email protected]
TO: Thomas Zimmermann <[email protected]>
CC: Javier Martinez Canillas <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   d4252071b97d2027d246f6a82cbee4d52f618b47
commit: 4f093a527b0b8f9d3059a4e8376e582fd14cf09e drm/gem: Warn on trying to use 
a non-existing framebuffer plane
date:   3 months ago
:::::: branch date: 18 hours ago
:::::: commit date: 3 months ago
config: mips-randconfig-c004-20220808 
(https://download.01.org/0day-ci/archive/20220811/[email protected]/config)
compiler: clang version 16.0.0 (https://github.com/llvm/llvm-project 
5f1c7e2cc5a3c07cbc2412e851a7283c1841f520)
reproduce (this is a W=1 build):
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install mips cross compiling tool for clang build
        # apt-get install binutils-mipsel-linux-gnu
        # 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4f093a527b0b8f9d3059a4e8376e582fd14cf09e
        git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout 4f093a527b0b8f9d3059a4e8376e582fd14cf09e
        # save the config file
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=mips 
clang-analyzer 

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <[email protected]>

clang-analyzer warnings: (new ones prefixed by >>)
                   ^
   drivers/base/swnode.c:1110:29: note: Access to field 'managed' results in a 
dereference of a null pointer
           to_swnode(fwnode)->managed = true;
                                      ^
   Suppressed 30 warnings (30 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   37 warnings generated.
   Suppressed 37 warnings (37 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   44 warnings generated.
   mm/vmscan.c:240:3: warning: Call to function 'memset' is insecure as it does 
not provide security checks introduced in the C11 standard. Replace with 
analogous functions that support length arguments or provides boundary checks 
such as 'memset_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
                   memset(new->map, (int)0xff, old_map_size);
                   ^~~~~~
   mm/vmscan.c:240:3: note: Call to function 'memset' is insecure as it does 
not provide security checks introduced in the C11 standard. Replace with 
analogous functions that support length arguments or provides boundary checks 
such as 'memset_s' in case of C11
                   memset(new->map, (int)0xff, old_map_size);
                   ^~~~~~
   mm/vmscan.c:241:3: warning: Call to function 'memset' is insecure as it does 
not provide security checks introduced in the C11 standard. Replace with 
analogous functions that support length arguments or provides boundary checks 
such as 'memset_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
                   memset((void *)new->map + old_map_size, 0, map_size - 
old_map_size);
                   ^~~~~~
   mm/vmscan.c:241:3: note: Call to function 'memset' is insecure as it does 
not provide security checks introduced in the C11 standard. Replace with 
analogous functions that support length arguments or provides boundary checks 
such as 'memset_s' in case of C11
                   memset((void *)new->map + old_map_size, 0, map_size - 
old_map_size);
                   ^~~~~~
   mm/vmscan.c:243:3: warning: Call to function 'memcpy' is insecure as it does 
not provide security checks introduced in the C11 standard. Replace with 
analogous functions that support length arguments or provides boundary checks 
such as 'memcpy_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
                   memcpy(new->nr_deferred, old->nr_deferred, old_defer_size);
                   ^~~~~~
   mm/vmscan.c:243:3: note: Call to function 'memcpy' is insecure as it does 
not provide security checks introduced in the C11 standard. Replace with 
analogous functions that support length arguments or provides boundary checks 
such as 'memcpy_s' in case of C11
                   memcpy(new->nr_deferred, old->nr_deferred, old_defer_size);
                   ^~~~~~
   mm/vmscan.c:244:3: warning: Call to function 'memset' is insecure as it does 
not provide security checks introduced in the C11 standard. Replace with 
analogous functions that support length arguments or provides boundary checks 
such as 'memset_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
                   memset((void *)new->nr_deferred + old_defer_size, 0,
                   ^~~~~~
   mm/vmscan.c:244:3: note: Call to function 'memset' is insecure as it does 
not provide security checks introduced in the C11 standard. Replace with 
analogous functions that support length arguments or provides boundary checks 
such as 'memset_s' in case of C11
                   memset((void *)new->nr_deferred + old_defer_size, 0,
                   ^~~~~~
   mm/vmscan.c:1520:2: warning: Call to function 'memset' is insecure as it 
does not provide security checks introduced in the C11 standard. Replace with 
analogous functions that support length arguments or provides boundary checks 
such as 'memset_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memset(stat, 0, sizeof(*stat));
           ^~~~~~
   mm/vmscan.c:1520:2: note: Call to function 'memset' is insecure as it does 
not provide security checks introduced in the C11 standard. Replace with 
analogous functions that support length arguments or provides boundary checks 
such as 'memset_s' in case of C11
           memset(stat, 0, sizeof(*stat));
           ^~~~~~
   mm/vmscan.c:2882:2: warning: Call to function 'memcpy' is insecure as it 
does not provide security checks introduced in the C11 standard. Replace with 
analogous functions that support length arguments or provides boundary checks 
such as 'memcpy_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(targets, nr, sizeof(nr));
           ^~~~~~
   mm/vmscan.c:2882:2: note: Call to function 'memcpy' is insecure as it does 
not provide security checks introduced in the C11 standard. Replace with 
analogous functions that support length arguments or provides boundary checks 
such as 'memcpy_s' in case of C11
           memcpy(targets, nr, sizeof(nr));
           ^~~~~~
   mm/vmscan.c:3128:2: warning: Call to function 'memset' is insecure as it 
does not provide security checks introduced in the C11 standard. Replace with 
analogous functions that support length arguments or provides boundary checks 
such as 'memset_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memset(&sc->nr, 0, sizeof(sc->nr));
           ^~~~~~
   mm/vmscan.c:3128:2: note: Call to function 'memset' is insecure as it does 
not provide security checks introduced in the C11 standard. Replace with 
analogous functions that support length arguments or provides boundary checks 
such as 'memset_s' in case of C11
           memset(&sc->nr, 0, sizeof(sc->nr));
           ^~~~~~
   Suppressed 37 warnings (37 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   33 warnings generated.
   drivers/gpu/drm/drm_managed.c:100:2: warning: Call to function 'memset' is 
insecure as it does not provide security checks introduced in the C11 standard. 
Replace with analogous functions that support length arguments or provides 
boundary checks such as 'memset_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memset(dr, 0, offsetof(struct drmres, data));
           ^~~~~~
   drivers/gpu/drm/drm_managed.c:100:2: note: Call to function 'memset' is 
insecure as it does not provide security checks introduced in the C11 standard. 
Replace with analogous functions that support length arguments or provides 
boundary checks such as 'memset_s' in case of C11
           memset(dr, 0, offsetof(struct drmres, data));
           ^~~~~~
   drivers/gpu/drm/drm_managed.c:228:3: warning: Call to function 'memcpy' is 
insecure as it does not provide security checks introduced in the C11 standard. 
Replace with analogous functions that support length arguments or provides 
boundary checks such as 'memcpy_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
                   memcpy(buf, s, size);
                   ^~~~~~
   drivers/gpu/drm/drm_managed.c:228:3: note: Call to function 'memcpy' is 
insecure as it does not provide security checks introduced in the C11 standard. 
Replace with analogous functions that support length arguments or provides 
boundary checks such as 'memcpy_s' in case of C11
                   memcpy(buf, s, size);
                   ^~~~~~
   Suppressed 31 warnings (31 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   38 warnings generated.
   drivers/gpu/drm/drm_vblank_work.c:243:2: warning: Call to function 'memset' 
is insecure as it does not provide security checks introduced in the C11 
standard. Replace with analogous functions that support length arguments or 
provides boundary checks such as 'memset_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           kthread_init_work(&work->base, func);
           ^
   include/linux/kthread.h:173:3: note: expanded from macro 'kthread_init_work'
                   memset((work), 0, sizeof(struct kthread_work));         \
                   ^~~~~~
   drivers/gpu/drm/drm_vblank_work.c:243:2: note: Call to function 'memset' is 
insecure as it does not provide security checks introduced in the C11 standard. 
Replace with analogous functions that support length arguments or provides 
boundary checks such as 'memset_s' in case of C11
           kthread_init_work(&work->base, func);
           ^
   include/linux/kthread.h:173:3: note: expanded from macro 'kthread_init_work'
                   memset((work), 0, sizeof(struct kthread_work));         \
                   ^~~~~~
   Suppressed 37 warnings (37 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   37 warnings generated.
   Suppressed 37 warnings (37 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   37 warnings generated.
   Suppressed 37 warnings (37 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   40 warnings generated.
   Suppressed 40 warnings (40 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   40 warnings generated.
   Suppressed 40 warnings (40 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   41 warnings generated.
   Suppressed 41 warnings (41 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   43 warnings generated.
>> drivers/gpu/drm/drm_gem_framebuffer_helper.c:56:21: warning: Value stored to 
>> 'dev' during its initialization is never read 
>> [clang-analyzer-deadcode.DeadStores]
           struct drm_device *dev = fb->dev;
                              ^~~   ~~~~~~~
   drivers/gpu/drm/drm_gem_framebuffer_helper.c:56:21: note: Value stored to 
'dev' during its initialization is never read
           struct drm_device *dev = fb->dev;
                              ^~~   ~~~~~~~
   drivers/gpu/drm/drm_gem_framebuffer_helper.c:364:4: warning: Call to 
function 'memcpy' is insecure as it does not provide security checks introduced 
in the C11 standard. Replace with analogous functions that support length 
arguments or provides boundary checks such as 'memcpy_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
                           memcpy(&data[i], &map[i], sizeof(data[i]));
                           ^~~~~~
   drivers/gpu/drm/drm_gem_framebuffer_helper.c:364:4: note: Call to function 
'memcpy' is insecure as it does not provide security checks introduced in the 
C11 standard. Replace with analogous functions that support length arguments or 
provides boundary checks such as 'memcpy_s' in case of C11
                           memcpy(&data[i], &map[i], sizeof(data[i]));
                           ^~~~~~
   Suppressed 41 warnings (41 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   42 warnings generated.
   drivers/gpu/drm/drm_atomic_state_helper.c:134:2: warning: Call to function 
'memcpy' is insecure as it does not provide security checks introduced in the 
C11 standard. Replace with analogous functions that support length arguments or 
provides boundary checks such as 'memcpy_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(state, crtc->state, sizeof(*state));
           ^~~~~~
   drivers/gpu/drm/drm_atomic_state_helper.c:134:2: note: Call to function 
'memcpy' is insecure as it does not provide security checks introduced in the 
C11 standard. Replace with analogous functions that support length arguments or 
provides boundary checks such as 'memcpy_s' in case of C11
           memcpy(state, crtc->state, sizeof(*state));
           ^~~~~~
   drivers/gpu/drm/drm_atomic_state_helper.c:331:2: warning: Call to function 
'memcpy' is insecure as it does not provide security checks introduced in the 
C11 standard. Replace with analogous functions that support length arguments or 
provides boundary checks such as 'memcpy_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(state, plane->state, sizeof(*state));
           ^~~~~~
   drivers/gpu/drm/drm_atomic_state_helper.c:331:2: note: Call to function 
'memcpy' is insecure as it does not provide security checks introduced in the 
C11 standard. Replace with analogous functions that support length arguments or 
provides boundary checks such as 'memcpy_s' in case of C11
           memcpy(state, plane->state, sizeof(*state));
           ^~~~~~
   drivers/gpu/drm/drm_atomic_state_helper.c:494:2: warning: Call to function 
'memcpy' is insecure as it does not provide security checks introduced in the 
C11 standard. Replace with analogous functions that support length arguments or 
provides boundary checks such as 'memcpy_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(state, connector->state, sizeof(*state));
           ^~~~~~
   drivers/gpu/drm/drm_atomic_state_helper.c:494:2: note: Call to function 
'memcpy' is insecure as it does not provide security checks introduced in the 
C11 standard. Replace with analogous functions that support length arguments or 
provides boundary checks such as 'memcpy_s' in case of C11
           memcpy(state, connector->state, sizeof(*state));
           ^~~~~~
   drivers/gpu/drm/drm_atomic_state_helper.c:581:2: warning: Call to function 
'memcpy' is insecure as it does not provide security checks introduced in the 
C11 standard. Replace with analogous functions that support length arguments or 
provides boundary checks such as 'memcpy_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(state, obj->state, sizeof(*state));
           ^~~~~~
   drivers/gpu/drm/drm_atomic_state_helper.c:581:2: note: Call to function 
'memcpy' is insecure as it does not provide security checks introduced in the 
C11 standard. Replace with analogous functions that support length arguments or 
provides boundary checks such as 'memcpy_s' in case of C11
           memcpy(state, obj->state, sizeof(*state));
           ^~~~~~
   drivers/gpu/drm/drm_atomic_state_helper.c:658:2: warning: Call to function 
'memset' is insecure as it does not provide security checks introduced in the 
C11 standard. Replace with analogous functions that support length arguments or 
provides boundary checks such as 'memset_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memset(state, 0, sizeof(*state));
           ^~~~~~
   drivers/gpu/drm/drm_atomic_state_helper.c:658:2: note: Call to function 
'memset' is insecure as it does not provide security checks introduced in the 
C11 standard. Replace with analogous functions that support length arguments or 
provides boundary checks such as 'memset_s' in case of C11
           memset(state, 0, sizeof(*state));
           ^~~~~~
   Suppressed 37 warnings (37 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   43 warnings generated.
   drivers/gpu/drm/virtio/virtgpu_fence.c:54:2: warning: Call to function 
'snprintf' is insecure as it does not provide security checks introduced in the 
C11 standard. Replace with analogous functions that support length arguments or 
provides boundary checks such as 'snprintf_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           snprintf(str, size, "[%llu, %llu]", f->context, f->seqno);
           ^~~~~~~~
   drivers/gpu/drm/virtio/virtgpu_fence.c:54:2: note: Call to function 
'snprintf' is insecure as it does not provide security checks introduced in the 
C11 standard. Replace with analogous functions that support length arguments or 
provides boundary checks such as 'snprintf_s' in case of C11
           snprintf(str, size, "[%llu, %llu]", f->context, f->seqno);
           ^~~~~~~~
   drivers/gpu/drm/virtio/virtgpu_fence.c:62:2: warning: Call to function 
'snprintf' is insecure as it does not provide security checks introduced in the 
C11 standard. Replace with analogous functions that support length arguments or 
provides boundary checks such as 'snprintf_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           snprintf(str, size, "%llu",
           ^~~~~~~~
   drivers/gpu/drm/virtio/virtgpu_fence.c:62:2: note: Call to function 
'snprintf' is insecure as it does not provide security checks introduced in the 
C11 standard. Replace with analogous functions that support length arguments or 
provides boundary checks such as 'snprintf_s' in case of C11
           snprintf(str, size, "%llu",
           ^~~~~~~~
   Suppressed 41 warnings (41 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   41 warnings generated.
   Suppressed 41 warnings (41 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   41 warnings generated.
   Suppressed 41 warnings (41 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   41 warnings generated.
   Suppressed 41 warnings (41 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   41 warnings generated.
   Suppressed 41 warnings (41 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   41 warnings generated.
   Suppressed 41 warnings (41 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   41 warnings generated.
   Suppressed 41 warnings (41 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   54 warnings generated.
   drivers/gpu/drm/i2c/tda998x_drv.c:623:2: warning: Call to function 'memcpy' 
is insecure as it does not provide security checks introduced in the C11 
standard. Replace with analogous functions that support length arguments or 
provides boundary checks such as 'memcpy_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(&buf[1], p, cnt);
           ^~~~~~
   drivers/gpu/drm/i2c/tda998x_drv.c:623:2: note: Call to function 'memcpy' is 
insecure as it does not provide security checks introduced in the C11 standard. 
Replace with analogous functions that support length arguments or provides 
boundary checks such as 'memcpy_s' in case of C11
           memcpy(&buf[1], p, cnt);
           ^~~~~~
   drivers/gpu/drm/i2c/tda998x_drv.c:1075:2: warning: Call to function 'memcpy' 
is insecure as it does not provide security checks introduced in the C11 
standard. Replace with analogous functions that support length arguments or 
provides boundary checks such as 'memcpy_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(audio.status, params->iec.status,
           ^~~~~~
   drivers/gpu/drm/i2c/tda998x_drv.c:1075:2: note: Call to function 'memcpy' is 
insecure as it does not provide security checks introduced in the C11 standard. 
Replace with analogous functions that support length arguments or provides 
boundary checks such as 'memcpy_s' in case of C11
           memcpy(audio.status, params->iec.status,
           ^~~~~~
   drivers/gpu/drm/i2c/tda998x_drv.c:1155:2: warning: Call to function 'memcpy' 
is insecure as it does not provide security checks introduced in the C11 
standard. Replace with analogous functions that support length arguments or 
provides boundary checks such as 'memcpy_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(buf, priv->connector.eld,
           ^~~~~~
   drivers/gpu/drm/i2c/tda998x_drv.c:1155:2: note: Call to function 'memcpy' is 
insecure as it does not provide security checks introduced in the C11 standard. 
Replace with analogous functions that support length arguments or provides 
boundary checks such as 'memcpy_s' in case of C11
           memcpy(buf, priv->connector.eld,
           ^~~~~~
   drivers/gpu/drm/i2c/tda998x_drv.c:1770:3: warning: Call to function 'memcpy' 
is insecure as it does not provide security checks introduced in the C11 
standard. Replace with analogous functions that support length arguments or 
provides boundary checks such as 'memcpy_s' in case of C11 
[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
                   memcpy(priv->audio.status, p->audio_params.status,

vim +/dev +56 drivers/gpu/drm/drm_gem_framebuffer_helper.c

55f7f72753abdd4 Andrzej Pietrasiewicz 2020-03-11  29  
4c3dbb2c312c9fa Noralf Trønnes        2017-08-13  30  /**
4c3dbb2c312c9fa Noralf Trønnes        2017-08-13  31   * DOC: overview
4c3dbb2c312c9fa Noralf Trønnes        2017-08-13  32   *
4c3dbb2c312c9fa Noralf Trønnes        2017-08-13  33   * This library provides 
helpers for drivers that don't subclass
2e187b2099034a2 Noralf Trønnes        2017-09-22  34   * &drm_framebuffer and 
use &drm_gem_object for their backing storage.
4c3dbb2c312c9fa Noralf Trønnes        2017-08-13  35   *
4c3dbb2c312c9fa Noralf Trønnes        2017-08-13  36   * Drivers without 
additional needs to validate framebuffers can simply use
2e187b2099034a2 Noralf Trønnes        2017-09-22  37   * drm_gem_fb_create() 
and everything is wired up automatically. Other drivers
2e187b2099034a2 Noralf Trønnes        2017-09-22  38   * can use all parts 
independently.
4c3dbb2c312c9fa Noralf Trønnes        2017-08-13  39   */
4c3dbb2c312c9fa Noralf Trønnes        2017-08-13  40  
4c3dbb2c312c9fa Noralf Trønnes        2017-08-13  41  /**
2e187b2099034a2 Noralf Trønnes        2017-09-22  42   * drm_gem_fb_get_obj() - 
Get GEM object backing the framebuffer
2e187b2099034a2 Noralf Trønnes        2017-09-22  43   * @fb: Framebuffer
2e187b2099034a2 Noralf Trønnes        2017-09-22  44   * @plane: Plane index
4c3dbb2c312c9fa Noralf Trønnes        2017-08-13  45   *
2e187b2099034a2 Noralf Trønnes        2017-09-22  46   * No additional 
reference is taken beyond the one that the &drm_frambuffer
2e187b2099034a2 Noralf Trønnes        2017-09-22  47   * already holds.
2e187b2099034a2 Noralf Trønnes        2017-09-22  48   *
2e187b2099034a2 Noralf Trønnes        2017-09-22  49   * Returns:
2e187b2099034a2 Noralf Trønnes        2017-09-22  50   * Pointer to 
&drm_gem_object for the given framebuffer and plane index or NULL
2e187b2099034a2 Noralf Trønnes        2017-09-22  51   * if it does not exist.
4c3dbb2c312c9fa Noralf Trønnes        2017-08-13  52   */
4c3dbb2c312c9fa Noralf Trønnes        2017-08-13  53  struct drm_gem_object 
*drm_gem_fb_get_obj(struct drm_framebuffer *fb,
4c3dbb2c312c9fa Noralf Trønnes        2017-08-13  54                            
          unsigned int plane)
4c3dbb2c312c9fa Noralf Trønnes        2017-08-13  55  {
4f093a527b0b8f9 Thomas Zimmermann     2022-05-17 @56    struct drm_device *dev 
= fb->dev;
4f093a527b0b8f9 Thomas Zimmermann     2022-05-17  57  
4f093a527b0b8f9 Thomas Zimmermann     2022-05-17  58    if 
(drm_WARN_ON_ONCE(dev, plane >= ARRAY_SIZE(fb->obj)))
4f093a527b0b8f9 Thomas Zimmermann     2022-05-17  59            return NULL;
4f093a527b0b8f9 Thomas Zimmermann     2022-05-17  60    else if 
(drm_WARN_ON_ONCE(dev, !fb->obj[plane]))
4c3dbb2c312c9fa Noralf Trønnes        2017-08-13  61            return NULL;
4c3dbb2c312c9fa Noralf Trønnes        2017-08-13  62  
4c3dbb2c312c9fa Noralf Trønnes        2017-08-13  63    return fb->obj[plane];
4c3dbb2c312c9fa Noralf Trønnes        2017-08-13  64  }
4c3dbb2c312c9fa Noralf Trønnes        2017-08-13  65  
EXPORT_SYMBOL_GPL(drm_gem_fb_get_obj);
4c3dbb2c312c9fa Noralf Trønnes        2017-08-13  66  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to