This patch is with respect to the following discussion on xen-devel -
http://lists.xenproject.org/archives/html/xen-devel/2014-07/msg01991.html
The file extras/mini-os/tpmback.c was failing compilation on certain compilers
because of size mismatch between enum and int. Earlier the code used to read
value of enum using %d format, which failed compilation on some compilers:
tpmback.c: In function ‘tpmif_change_state’:
tpmback.c:350:4: error: format ‘%d’ expects argument of type ‘int *’,
but argument 3 has type ‘enum xenbus_state *’ [-Werror=format=]
if(sscanf(value, "%d", &readst) != 1) {
^
Now the value is read into an actual int variable and then assigned to the
enum.
Signed-off-by:- Dushyant Behl <myselfdushyantbehl@gmail.com>
Acked-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
[ ijc -- added the actual error to the commit log ]
* returns 0 on success and non-zero on error */
int tpmif_change_state(tpmif_t* tpmif, enum xenbus_state state)
{
+ int tempst;
char path[512];
char *value;
char *err;
free(err);
return -1;
}
- if(sscanf(value, "%d", &readst) != 1) {
+ if(sscanf(value, "%d", &tempst) != 1) {
TPMBACK_ERR("Non integer value (%s) in %s ??\n", value, path);
free(value);
return -1;
}
+ readst = (enum xenbus_state) tempst;
free(value);
/* It's possible that the backend state got updated by hotplug or something else behind our back */