Commit graph

804 commits

Author SHA1 Message Date
Johan Hovold
0fb5acc401 greybus: operation: fix use-after-free when sending responses
Fix use-after-free when sending responses due to reference imbalance.

Make sure to take a reference to the operation when sending responses.
This reference is dropped in greybus_data_sent when the message has been
sent, while the initial reference is dropped in gb_operation_work after
processing the corresponding request.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-30 15:10:06 +02:00
Johan Hovold
37754030b0 greybus: operation: fix callback handling and documentation
Fix up obsolete comments referring to null callback pointers for
synchronous operations, and make sure a callback is always provided when
sending a request.

Also document that the callback is responsible for dropping the initial
(and not necessarily final) reference to the operation.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-30 15:10:06 +02:00
Johan Hovold
d506283491 greybus: operation: fix typo in comment
Fix typo in comment.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-30 15:10:06 +02:00
Johan Hovold
1dad6b3515 greybus: operation: fix missing symbol exports
Add missing EXPORT_SYMBOL_GPL for gb_operation_response_alloc,
gb_operation_result, gb_operation_get, gb_operation_request_send and
gb_operation_cancel, which are all supposed to be accessible from
protocol handlers.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-30 15:10:06 +02:00
Viresh Kumar
e2cb6cacad greybus: kernel_ver.h: include <linux/kernel.h> to fix warning
And this is the warning I was getting on kernel version > 3.14

  CC [M]  greybus/connection.o
  In file included from
  include/asm-generic/gpio.h:4:0,
	from arch/arm/include/asm/gpio.h:9,
	from include/linux/gpio.h:48,
	from greybus/kernel_ver.h:59,
	from greybus/connection.c:12:
  include/linux/kernel.h:35:0: warning: "U16_MAX" redefined

kernel_ver.h is taking care of defining U16_MAX only if is not defined earlier,
but it is often included as the first .h file. <linux/kernel.h> might be
included later, which always defines it, unconditionally. And so this warning.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-30 15:03:36 +02:00
Greg Kroah-Hartman
ca3ec299c2 greybus: es2: sync up with recent es1.c changes
This brings the debug log functionality of es1.c to es2.c, along with
some other minor cleanups.

Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Reviewed-by: Alex Elder <elder@linaro.org>
2015-03-30 15:01:56 +02:00
Greg Kroah-Hartman
48f70474f4 greybus: debugfs: we shouldn't care if debugfs is working or not
This removes the error checking for debugfs initialization as we really
don't care if it failed or not.

Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Reviewed-by: Alex Elder <elder@linaro.org>
2015-03-30 15:01:56 +02:00
Alex Elder
142f8ddf71 greybus: get rid of {conceal,reveal}_urb()
These clever macros were fine for early development, but they're
more of a distraction now.

Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-27 11:16:35 +01:00
Alex Elder
d3d2bea161 greybus: clean up some small messes
This is an old patch that I neglected to send out.  It's cleaning
up a couple things that got committed before I had a chance to
comment on them.

In operation.c there is a "FIXME" comment that is easily proven
wrong by inspection.

In gb_protocol_put(), there is another wrong "FIXME" comment as
well.  We can also use our cached copies of the protocol major
and minor version number in another spot.  And balance that
out by using a cached copy of the protocol id.

Signed-off-by: Alex Elder <elder@linaro.org>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-27 11:16:35 +01:00
Greg Kroah-Hartman
938451f184 greybus: Merge branch 'es1-fixes' into master
Merge the es1 log file fixes into master.

Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-25 09:26:33 +01:00
Viresh Kumar
71e4938012 greybus: interface: put module->dev on failures
In order to decrement the reference count of module on failures, we must call
put_device(module->dev). This was missing for one of the error cases, fix it.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-24 21:00:24 +01:00
Viresh Kumar
0d34be7587 greybus: Greybus: Place module_init/exit() right after respective routines
As mentioned in kernel coding guidelines.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-24 21:00:24 +01:00
Viresh Kumar
13fe6a9af3 greybus: manifest: don't need to check for desc_size == 0 anymore
identify_descriptor() doesn't return 0 anymore and so we don't need to check the
returned value against 0.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-24 20:59:03 +01:00
Viresh Kumar
19b3b2c2ae greybus: manifest: descriptor size should be >= header size
We are calculating descriptors expected size differently based on the type of
descriptor, that's fine but at few places we aren't taking size of the header
into account. And that looks wrong.

Lets make sure it is atleast as big as descriptor's header.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-24 20:59:03 +01:00
Greg Kroah-Hartman
25d1c37798 greybus: es1: allow the debug log to be stopped
If you write 0 to the debugfs file, the log will stop being updated.

Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-24 20:47:24 +01:00
Greg Kroah-Hartman
0c264c6fc2 greybus: es1: separate usb_log enable/disable logic into different functions
One function shouldn't do two different things depending on a parameter
passed to it, so split usb_log_enable() into usb_log_disable()

Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-24 20:45:31 +01:00
Greg Kroah-Hartman
efdc43130c greybus: es1: fix checkpatch warning about blank lines needed
Add a blank line in apb1_log_enable_read() to make checkpatch happy.

Oh, and it makes the code more readable too...

Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-24 20:34:02 +01:00
Greg Kroah-Hartman
64b8a16f44 greybus: es1: move debugfs function to use kstrotoint_from_user()
No need to duplicate built-in functions that the kernel has, so have the
core kernel parse the userspace string.  Saves us an allocation and
makes the logic simpler.

Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-24 20:32:40 +01:00
Greg Kroah-Hartman
d52f9973e2 greybus: es1: decimal modes are not what are wanted for debugfs
decimal is not octal, so use the proper mode settings for the debugfs
files.

Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-24 20:10:58 +01:00
Greg Kroah-Hartman
4600d03f80 greybus: es1: struct file_operations needs to be const
We aren't changing these pointers, so mark them read-only as that is the
preferred way.

Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-24 20:08:12 +01:00
Greg Kroah-Hartman
26164edb8f greybus: es1: no need to check for NULL on debugfs_remove()
The function can, and even expects NULL, so don't check.

Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-24 20:06:41 +01:00
Greg Kroah-Hartman
cd674c8d4c greybus: es1: use <linux/uaccess.h> and not <asm/uaccess.h>
Asm is only for when you are doing arch-specific stuff, which we aren't
doing here.

Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-24 20:04:49 +01:00
Greg Kroah-Hartman
2f4e236648 greybus: es1: fix tiny whitespace issues
No trailing spaces or spaces before tabs are allowed.

Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-24 20:03:39 +01:00
Greg Kroah-Hartman
6c28f09658 greybus: es1: fix build warning for apb1_log_enable_write
It's "const char __user *buf", not "char __user *buf".

'make check' is your friend.

Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-24 19:57:53 +01:00
Alexandre Bailon
59e3344461 greybus: Dump log from APB1
On AP module (form factor), we don't have access to APBridge JTAG or UART.
But sometime, we still need to get log from APBridge. Add a new request in control endpoint
to get APBridge logs.
Logs can be accessed using debugfs (greybus/apb1_log).

Signed-off-by: Alexandre Bailon <abailon@baylibre.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2015-03-24 19:49:47 +01:00
Viresh Kumar
337b068722 greybus: core: Don't initialize greybus if it is disabled
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2015-03-24 15:53:45 +01:00
Johan Hovold
792c17e643 greybus: gpio: add error messages to callbacks not propagating errors
Add error messages on failures to deactivate, set and get operation
handlers as any errors would not be detected by the upper layers (either
because the callbacks are declared void or expected to return a boolean
value).

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-19 17:30:38 +01:00
Johan Hovold
7bfa078140 greybus: gpio: refuse to set value of input pins
Add warning and refuse to set output value for pin configured as input,
as the result of such an operation is undefined.

Remove incorrect todo-comment suggesting that the driver could
implicitly switch direction as part of the call.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-19 17:30:38 +01:00
Johan Hovold
64d2f4e5f9 greybus: gpio: clean up line-state allocation
Clean up allocation of line-state array.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-19 17:30:38 +01:00
Johan Hovold
e5032d8511 greybus: gpio: use dev_err and dev_warn
Use the more informative dev_err and dev_warn for messages, and make the
messages more uniform.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-19 17:30:38 +01:00
Johan Hovold
86c6816158 greybus: gpio: fix error handling
Make sure to propagate any errors detected up the call chain.

This specifically means that we will detect failed connection init,
something which is now handled more gracefully by greybus core.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-19 17:30:38 +01:00
Johan Hovold
8aff1aceb2 greybus: gpio: make gb_gpio_controller pointer naming consistent
Rename all struct gb_gpio_controller-pointer variables "ggc" for
consistency and readability reason.

This also fixes a bunch of lines that exceeded the 80 columns limit.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-19 17:29:40 +01:00
Johan Hovold
bda7e2d112 greybus: gpio: remove unnecessary explicit cast
Remove unnecessary explicit cast of line value.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-19 17:29:40 +01:00
Johan Hovold
83d9cddb85 greybus: gpio: remove overly defensive argument verification
Remove overly defensive argument verification in gpio-chip callbacks. We
should trust gpiolib to get this right (or we would not even get any
callback) just like the other gpio drivers do.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-19 17:29:40 +01:00
Johan Hovold
65f5a5f161 greybus: gpio: remove redundant argument verification
Remove redundant verification of gpio numbers (which have already been
verified in the gpio-chip callbacks) from greybus-operation helpers.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-19 17:29:40 +01:00
Johan Hovold
56c2da1873 greybus: gpio: remove incorrect todo comments
The module reference count is incremented by gpiolib when a gpio is
requested, and the driver callbacks certainly do sleep.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-19 17:29:40 +01:00
Johan Hovold
c2a6610686 greybus: gpio: fix truncated debounce times
Fix set_debounce, which silently truncated the time argument to 255us
even though we support 16-bit values.

Also remove the unnecessary explicit cast when verifying the argument.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-19 17:29:40 +01:00
Johan Hovold
c0d209a07b greybus: operation: remove unnecessary cast
Remove unnecessary cast of the message size in gb_connection_recv.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-19 17:28:19 +01:00
Johan Hovold
ee8f81b096 greybus: operation: use dev_err in gb_operation_sync
Use the more informative dev_err in gb_operation_sync, which includes
the connection device name in the error message (which in turn encodes
the module, interface, bundle and cport ids).

Add missing braces to conditional-construct branches while at it.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-19 17:28:19 +01:00
Johan Hovold
25eb732954 greybus: connection: replace custom error function with dev_err
Remove custom connection error function and replace it with dev_err.

The standard error function provides more information in the message
prefix (e.g. includes the interface id), has a well-known semantics
(e.g. does does not add newlines to messages), and is even somewhat
shorter to type.

Note that some uses of the custom function were already adding double
newlines due to the non-standard semantics.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-19 17:28:19 +01:00
Johan Hovold
fe4c0e548a greybus: ap: clean up svc link management error path
Return immediately on bundle-init failure when processing SVC link up.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-19 17:27:08 +01:00
Johan Hovold
69bae8910e greybus: ap: fix typo in comment
Fix typo in svc_hotplug comment.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-19 17:27:08 +01:00
Johan Hovold
0b7534b86d greybus: ap: fix svc handshake protocol check
Fix incorrect SVC handshake protocol check, which would only bail out if
both major and minor protocol versions supported by the SVC differed.

Since we currently only support one version of the protocol, upgrade the
debug message to warning and bail unless the protocol versions match
perfectly for now.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-19 17:27:08 +01:00
Johan Hovold
c020d568f5 greybus: usb: silence compiler warning
This driver is being rewritten, but let's silence a pointer-to-int-cast
compiler warning meanwhile.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-19 17:27:08 +01:00
Viresh Kumar
292cca99fb greybus: hid: don't support OUTPUT report over interrupt channel
There is no interrupt channel as such and so no need to support
->output_report().

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-19 15:03:47 +01:00
Viresh Kumar
d71aaf288f greybus: core: place module_{init|exit}() right below the routines
To follow coding guidelines a bit :)

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-19 15:02:28 +01:00
Viresh Kumar
9ee2b61df1 greybus: interface: remove double underscore from fn name
Also bring * closer to gb_interface_get_drvdata :)

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-19 15:02:28 +01:00
Viresh Kumar
3b6cf2ee3b greybus: operation: Fix comment mistake
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-19 15:02:28 +01:00
Viresh Kumar
183f872eb1 greybus: operation: s/status/result to match field name
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-19 15:02:28 +01:00
Alexandre Bailon
e8f824b658 greybus: Export greybus debugfs folder
Add gb_debugfs_get method to access to gb_debug_root dentry,
in order to use it from other greybus modules.

Signed-off-by: Alexandre Bailon <abailon@baylibre.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
2015-03-19 15:02:28 +01:00