[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <8daf27d0-0f58-2dd6-c1bb-7b634494212a@c-s.fr>
Date: Tue, 27 Nov 2018 15:59:11 +0000
From: Christophe Leroy <christophe.leroy@....fr>
To: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
Cc: Kees Cook <keescook@...omium.org>, Arnd Bergmann <arnd@...db.de>,
linux-kernel@...r.kernel.org, linuxppc-dev@...ts.ozlabs.org
Subject: Re: [PATCH] lkdtm: do not depend on CONFIG_BLOCK
On 11/27/2018 07:43 AM, Greg Kroah-Hartman wrote:
> On Fri, Nov 09, 2018 at 07:05:51AM +0000, Christophe Leroy wrote:
>> Most parts of lkdtm don't require CONFIG_BLOCK.
>>
>> This patch limits dependency to CONFIG_BLOCK in order to give embedded
>> platforms which don't select CONFIG_BLOCK the opportunity to use LKDTM.
>>
>> Fixes: fddd9cf82c9f ("make LKDTM depend on BLOCK")
>> Signed-off-by: Christophe Leroy <christophe.leroy@....fr>
>> ---
>> drivers/misc/lkdtm/core.c | 7 ++++++-
>> lib/Kconfig.debug | 1 -
>> 2 files changed, 6 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/misc/lkdtm/core.c b/drivers/misc/lkdtm/core.c
>> index 2837dc77478e..bc76756b7eda 100644
>> --- a/drivers/misc/lkdtm/core.c
>> +++ b/drivers/misc/lkdtm/core.c
>> @@ -40,9 +40,12 @@
>> #include <linux/interrupt.h>
>> #include <linux/hrtimer.h>
>> #include <linux/slab.h>
>> -#include <scsi/scsi_cmnd.h>
>> #include <linux/debugfs.h>
>>
>> +#ifdef CONFIG_BLOCK
>> +#include <scsi/scsi_cmnd.h>
>> +#endif
>
> Why would this config option be needed to be checked just to be able to
> include a .h file?
Because if including that file regardless of the config option, you get:
CALL scripts/checksyscalls.sh
CC drivers/misc/lkdtm/core.o
In file included from ./include/scsi/scsi_cmnd.h:7:0,
from drivers/misc/lkdtm/core.c:45:
./include/linux/t10-pi.h:40:41: warning: 'struct request' declared
inside parameter list
static inline u32 t10_pi_ref_tag(struct request *rq)
^
./include/linux/t10-pi.h:40:41: warning: its scope is only this
definition or declaration, which is probably not what you want
./include/linux/t10-pi.h:61:8: warning: 'struct request' declared inside
parameter list
unsigned int intervals)
^
./include/linux/t10-pi.h:64:42: warning: 'struct request' declared
inside parameter list
static inline void t10_pi_prepare(struct request *rq, u8 protection_type)
^
In file included from ./include/scsi/scsi_cmnd.h:12:0,
from drivers/misc/lkdtm/core.c:45:
./include/scsi/scsi_device.h:435:4: error: unknown type name 'req_flags_t'
req_flags_t rq_flags, int *resid);
^
./include/scsi/scsi_device.h: In function 'scsi_execute_req':
./include/scsi/scsi_device.h:442:2: error: implicit declaration of
function '__scsi_execute' [-Werror=implicit-function-declaration]
__scsi_execute(sdev, cmd, data_direction, buffer, bufflen, \
^
./include/scsi/scsi_device.h:451:9: note: in expansion of macro
'scsi_execute'
return scsi_execute(sdev, cmd, data_direction, buffer,
^
In file included from ./include/scsi/scsi_request.h:5:0,
from ./include/scsi/scsi_cmnd.h:13,
from drivers/misc/lkdtm/core.c:45:
./include/linux/blk-mq.h: At top level:
./include/linux/blk-mq.h:100:9: error: type defaults to 'int' in
declaration of 'blk_status_t' [-Werror=implicit-int]
typedef blk_status_t (queue_rq_fn)(struct blk_mq_hw_ctx *,
^
./include/linux/blk-mq.h:100:9: error: 'blk_status_t' declared as
function returning a function
./include/linux/blk-mq.h:101:16: warning: parameter names (without
types) in function declaration
const struct blk_mq_queue_data *);
^
./include/linux/blk-mq.h:123:2: error: unknown type name 'queue_rq_fn'
queue_rq_fn *queue_rq;
^
./include/linux/blk-mq.h:144:2: error: unknown type name 'softirq_done_fn'
softirq_done_fn *complete;
^
./include/linux/blk-mq.h:223:31: error: 'blk_mq_req_flags_t' undeclared
here (not in a function)
BLK_MQ_REQ_NOWAIT = (__force blk_mq_req_flags_t)(1 << 0),
^
./include/linux/blk-mq.h:233:3: error: expected declaration specifiers
or '...' before 'blk_mq_req_flags_t'
blk_mq_req_flags_t flags);
^
./include/linux/blk-mq.h:235:20: error: expected declaration specifiers
or '...' before 'blk_mq_req_flags_t'
unsigned int op, blk_mq_req_flags_t flags,
^
In file included from ./arch/powerpc/include/asm/atomic.h:11:0,
from ./include/linux/atomic.h:7,
from ./include/linux/spinlock.h:436,
from ./include/linux/wait.h:9,
from ./include/linux/wait_bit.h:8,
from ./include/linux/fs.h:6,
from drivers/misc/lkdtm/core.c:34:
./include/linux/blk-mq.h: In function 'blk_mq_mark_complete':
./include/linux/blk-mq.h:306:20: error: dereferencing pointer to
incomplete type 'struct request'
return cmpxchg(&rq->state, MQ_RQ_IN_FLIGHT, MQ_RQ_COMPLETE) ==
^
./arch/powerpc/include/asm/cmpxchg.h:483:19: note: in definition of
macro 'cmpxchg'
__typeof__(*(ptr)) _o_ = (o); \
^
./include/linux/blk-mq.h:306:29: error: 'MQ_RQ_IN_FLIGHT' undeclared
(first use in this function)
return cmpxchg(&rq->state, MQ_RQ_IN_FLIGHT, MQ_RQ_COMPLETE) ==
^
./arch/powerpc/include/asm/cmpxchg.h:483:32: note: in definition of
macro 'cmpxchg'
__typeof__(*(ptr)) _o_ = (o); \
^
./include/linux/blk-mq.h:306:29: note: each undeclared identifier is
reported only once for each function it appears in
return cmpxchg(&rq->state, MQ_RQ_IN_FLIGHT, MQ_RQ_COMPLETE) ==
^
./arch/powerpc/include/asm/cmpxchg.h:483:32: note: in definition of
macro 'cmpxchg'
__typeof__(*(ptr)) _o_ = (o); \
^
./include/linux/blk-mq.h:306:46: error: 'MQ_RQ_COMPLETE' undeclared
(first use in this function)
return cmpxchg(&rq->state, MQ_RQ_IN_FLIGHT, MQ_RQ_COMPLETE) ==
^
./arch/powerpc/include/asm/cmpxchg.h:484:32: note: in definition of
macro 'cmpxchg'
__typeof__(*(ptr)) _n_ = (n); \
^
In file included from ./include/scsi/scsi_request.h:5:0,
from ./include/scsi/scsi_cmnd.h:13,
from drivers/misc/lkdtm/core.c:45:
./include/linux/blk-mq.h: In function 'blk_mq_rq_from_pdu':
./include/linux/blk-mq.h:316:22: error: invalid application of 'sizeof'
to incomplete type 'struct request'
return pdu - sizeof(struct request);
^
./include/linux/blk-mq.h: In function 'blk_mq_rq_to_pdu':
./include/linux/blk-mq.h:320:2: error: invalid use of undefined type
'struct request'
return rq + 1;
^
In file included from drivers/misc/lkdtm/core.c:45:0:
./include/scsi/scsi_cmnd.h: In function 'scsi_bidi_cmnd':
./include/scsi/scsi_cmnd.h:214:9: error: implicit declaration of
function 'blk_bidi_rq' [-Werror=implicit-function-declaration]
return blk_bidi_rq(cmd->request) &&
^
./include/scsi/scsi_cmnd.h: In function 'scsi_get_lba':
./include/scsi/scsi_cmnd.h:307:9: error: implicit declaration of
function 'blk_rq_pos' [-Werror=implicit-function-declaration]
return blk_rq_pos(scmd->request);
^
cc1: some warnings being treated as errors
make[1]: *** [drivers/misc/lkdtm/core.o] Error 1
make: *** [drivers/misc/lkdtm/core.o] Error 2
>
> And shouldn't you be depending on SCSI instead?
Yes maybe. I did make it depend on CONFIG_BLOCK because it was what it
was depending on in the Kconfig. I'll send a v2
Christophe
>
>> +
>> #ifdef CONFIG_IDE
>> #include <linux/ide.h>
>> #endif
>> @@ -101,7 +104,9 @@ static struct crashpoint crashpoints[] = {
>> CRASHPOINT("FS_DEVRW", "ll_rw_block"),
>> CRASHPOINT("MEM_SWAPOUT", "shrink_inactive_list"),
>> CRASHPOINT("TIMERADD", "hrtimer_start"),
>> +# ifdef CONFIG_BLOCK
>> CRASHPOINT("SCSI_DISPATCH_CMD", "scsi_dispatch_cmd"),
>> +# endif
>
> Again, scsi?
>
> thanks,
>
> greg k-h
>
Powered by blists - more mailing lists