Pranay Kr. Srivastava, on mer. 22 févr. 2017 12:50:27 +0530, wrote: > This patch removes the unnecessary allocation of > current foreground vc during initialization. > > This initialization is already handled in the loop > that follows it for all available virtual consoles. > > Also change the prototype of speakup_allocate to take > extra argument of gfp_* flags. Thus not requiring > GFP_ATOMIC during initialization. > > Signed-off-by: Pranay Kr. Srivastava <pranjas@xxxxxxxxx> Reviewed-by: Samuel Thibault <samuel.thibault@xxxxxxxxxxxx> > --- > drivers/staging/speakup/main.c | 19 ++++--------------- > 1 file changed, 4 insertions(+), 15 deletions(-) > > diff --git a/drivers/staging/speakup/main.c b/drivers/staging/speakup/main.c > index 6667cf2..f81a936 100644 > --- a/drivers/staging/speakup/main.c > +++ b/drivers/staging/speakup/main.c > @@ -1327,14 +1327,14 @@ static int edit_bits(struct vc_data *vc, u_char type, u_char ch, u_short key) > } > > /* Allocation concurrency is protected by the console semaphore */ > -static int speakup_allocate(struct vc_data *vc) > +static int speakup_allocate(struct vc_data *vc, gfp_t gfp_flags) > { > int vc_num; > > vc_num = vc->vc_num; > if (speakup_console[vc_num] == NULL) { > speakup_console[vc_num] = kzalloc(sizeof(*speakup_console[0]), > - GFP_ATOMIC); > + gfp_flags); > if (speakup_console[vc_num] == NULL) > return -ENOMEM; > speakup_date(vc); > @@ -2257,7 +2257,7 @@ static int vt_notifier_call(struct notifier_block *nb, > switch (code) { > case VT_ALLOCATE: > if (vc->vc_mode == KD_TEXT) > - speakup_allocate(vc); > + speakup_allocate(vc, GFP_ATOMIC); > break; > case VT_DEALLOCATE: > speakup_deallocate(vc); > @@ -2317,7 +2317,6 @@ static int __init speakup_init(void) > { > int i; > long err = 0; > - struct st_spk_t *first_console; > struct vc_data *vc = vc_cons[fg_console].d; > struct var_t *var; > > @@ -2342,18 +2341,9 @@ static int __init speakup_init(void) > if (err) > goto error_virtkeyboard; > > - first_console = kzalloc(sizeof(*first_console), GFP_KERNEL); > - if (!first_console) { > - err = -ENOMEM; > - goto error_alloc; > - } > - > - speakup_console[vc->vc_num] = first_console; > - speakup_date(vc); > - > for (i = 0; i < MAX_NR_CONSOLES; i++) > if (vc_cons[i].d) { > - err = speakup_allocate(vc_cons[i].d); > + err = speakup_allocate(vc_cons[i].d, GFP_KERNEL); > if (err) > goto error_kobjects; > } > @@ -2412,7 +2402,6 @@ static int __init speakup_init(void) > for (i = 0; i < MAX_NR_CONSOLES; i++) > kfree(speakup_console[i]); > > -error_alloc: > speakup_remove_virtual_keyboard(); > > error_virtkeyboard: > -- > 2.10.2 > -- Samuel Créer une hiérarchie supplementaire pour remedier à un problème (?) de dispersion est d'une logique digne des Shadocks. * BT in: Guide du Cabaliste Usenet - La Cabale vote oui (les Shadocks aussi) * _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel