Re: [PATCH 14/38] drm/i915: Introduce the i915_user_extension_method

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 01/03/2019 18:57, Chris Wilson wrote:
Quoting Tvrtko Ursulin (2019-03-01 15:39:13)

On 01/03/2019 14:03, Chris Wilson wrote:
+int i915_user_extensions(struct i915_user_extension __user *ext,
+                      const i915_user_extension_fn *tbl,
+                      unsigned long count,
+                      void *data)
+{
+     unsigned int stackdepth = 512;
+
+     while (ext) {
+             int err;
+             u64 x;
+
+             if (!stackdepth--) /* recursion vs useful flexibility */
+                     return -EINVAL;

I don't get this. What stack? Did you mean "static unsigned int
stackdepth" in case someone puts i915_user_extension into the extension
table? Or just a limit on number of chained extensions? But you are not
processing the recursively here.

It's iterative recursion :)

I still think of this loop in terms of its simple tail recursion.

And if we need to individual levels for unwind, that is a manual stack.
Okay..

One thought I had - if unwind is too unwieldy, could we mandate each user extension user has an additional output field in the embedding struct which would hold the last processed extension id?

This way the state of the object would be less undefined after failure. Userspace would be able to tell how far in the extension chain i915 managed to get to.

Regards,

Tvrtko
_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux