All of lore.kernel.org
 help / color / mirror / Atom feed
* Static inline DRM functions calling into GPL-only code
@ 2017-04-11  4:14 Nikhil Mahale
  2017-04-11  5:52 ` Daniel Vetter
  2017-04-11  7:24 ` nvidia vgaarb bug (was: Re: Static inline DRM functions calling into GPL-only code) Lukas Wunner
  0 siblings, 2 replies; 10+ messages in thread
From: Nikhil Mahale @ 2017-04-11  4:14 UTC (permalink / raw)
  To: dri-devel

Hi,

My name is Nikhil Mahale, and I work at NVIDIA in the Linux drivers 
team.

I have been working on adding DRM KMS support to our driver. The NVIDIA 
GPU driver package (364.12 and higher) provides a kernel module, 
nvidia-drm.ko, which is licensed as "MIT". This module registers a DRM 
driver with the DRM subsystem of the Linux kernel and advertises KMS 
capability on Linux kernel v4.1 or higher, with CONFIG_DRM and 
CONFIG_DRM_KMS_HELPER enabled.

We have been able to maintain compatibility between nvidia-drm.ko and 
Linux kernels from v2.6.9 to v4.10. Unfortunately 
with release candidates of v4.11:

* Commit 10383aea2f445bce9b2a2b308def08134b438c8e changed the kernel's 
kref implementation to use refcount_inc and refcount_dec_and_test.
* Commit 29dee3c03abce04cd527878ef5f9e5f91b7b83f4 made refcount_inc and 
refcount_dec_and_test EXPORT_SYMBOL_GPL.

DRM drivers call refcount_inc through static inline function callchains 
such as:

    drm_crtc_commit_put() => kref_put() => refcount_dec_and_test()
    drm_crtc_commit_get() => kref_get() => refcount_inc()

    drm_atomic_state_put() => kref_put() => refcount_dec_and_test()
    drm_atomic_state_get() => kref_get() => refcount_inc()

    drm_gem_object_reference() => kref_get => refcount_inc()

This causes nvidia-drm.ko to inadvertently pick up references to 
EXPORT_SYMBOL_GPL symbols.

There is not interest in relaxing the export of refcount_inc, and 
changing the license of nvidia-drm.ko isn't viable right now.

So, the remaining options we see are:

* Make these static inline DRM functions EXPORT_SYMBOL instead of 
inline.

* Make these static inline DRM functions not use kref.

* Make nvidia-drm.ko not use these static inline DRM functions.

None of those seem good, though the first might be least bad.  Do any of 
those seem reasonable?

-- 
Thanks,
Nikhil Mahale
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2017-12-06 11:32 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-04-11  4:14 Static inline DRM functions calling into GPL-only code Nikhil Mahale
2017-04-11  5:52 ` Daniel Vetter
2017-04-11  6:20   ` Daniel Vetter
2017-04-11 15:15     ` James Jones
2017-04-11 16:09       ` Harry Wentland
2017-04-11 16:37         ` James Jones
2017-04-11 17:33           ` Harry Wentland
2017-04-11  7:24 ` nvidia vgaarb bug (was: Re: Static inline DRM functions calling into GPL-only code) Lukas Wunner
2017-04-12 22:46   ` Andy Ritger
2017-12-06 11:24     ` Lukas Wunner

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.